                            Release Notes for
             P4Convert, a SVN and CVS to Perforce conversion tool.

This documentation needs an update reflecting the new features on the Public release of
the converter.

                        Version PUBLIC.Main.12912

Introduction

	This document lists all user-visible changes to P4Convert
	from release 2011.2, the first supported release.

	Perforce numbers releases YYYY.R/CCCCC, e.g. 2011.2/434818.
	YYYY is the year; R is the release of that year; CCCCC is the
	bug fix change level. Each bug fix in these release notes is
	marked by its change number. Any build includes (1) all bug fixes
	of all previous releases and (2) all bug fixes of the current
	release up to the bug fix change level.

	To determine the version of your P4Convert, issue the following
	command:
		java -jar p4convert.jar --version
		
--------------------------------------------------------------------------

Compatibility Statements

	Server Compatibility

	  You can use any release of P4Convert with any release of the 
	  Perforce server later than 2010.2
	  
	Platform Compatibility

	  While P4Convert is generally portable, this release is certified
	  only on the following platforms:

		Linux 2.6 Intel (x86_64)
		Solaris 10 Intel (x86)
		Windows 7 Intel (x86_64)
		Mac OS X 10.7 (x86_64)
		
	Java Virtual Machine
	
	  This release is certified to run on Java SE Runtime Environment 1.7.*

--------------------------------------------------------------------------

Release PUBLIC.Main.12912

  #12912
  
  Document SVN limitation with +l on edge/commit servers


  #12893

  CVS: Enable merging of Content Properties with the Type Map.


  #12890

  Extended start/stop change limits to CVS.


  #12552 (Bug 219)

  Remove warning count on message: 
  
  "Adding missing delimiter '/' or '\\' to end of Client path."


  #12551

  Import mode workspace path fix code and logging.

  The issues only seems to occure when the configuration option 
  'com.p4convert.svn.mergeInfoEnabled' is true.  The merge seems to create a 
  symlink or label then merge a directory over the top.


--------------------------------------------------------------------------

Release PUBLIC.Main.12535

  #12535 (Bug 218 220)

  CVS/SVN: Substitute spaces with an '_' for label names.


--------------------------------------------------------------------------

Release PUBLIC.Main.12523

  #12522 (Bug 206)

  Document the CVS part mapping feature.


  #12521

  CVS: Audit logging when generating Tmp files from RCS.

  Creates a file "tmpFile.log" under the com.perforce.cvs.tmpDir and logging 
  is enabled by default.

   com.perforce.cvs.audit.tmp=true


  #12520

  Change log formatting to include date and remove thread info.


  #12516 (Bug)

  Fix to label name formatting. CVS branches downgraded to labels were missed
  during formatting.
  
  
--------------------------------------------------------------------------

Release PUBLIC.Main.12492

  #12492

  CVS: Do not add empty CVS changes to the process list.

  Fix for: java.lang.NullPointerException
       at com.perforce.common.process.ChangeInfo.<init>(ChangeInfo.java:37)
       

  #12488 (Bug 210)

  DOC: Update online web docs.


  #12487 (Bug 210)

  DOC: Added a warning note for granting the conversion user an "Unlimited" 
  login timeout.


  #12485 (Bug 203)

  DOC: Update Markdown and build release rules for web based docs.


  #12481 (Bug 207)

  Build: Generate a sample CVS and SVN configuration on release.


  #12476

  CVS: When Translation is disabled downgrade UTF16 to BINARY


--------------------------------------------------------------------------

Release PUBLIC.Main.12441

  #12441

  CVS: Toggle off CVS change list storage.


  #12440

  CVS: More efficient parsing of RCS files.


--------------------------------------------------------------------------

Release PUBLIC.Main.12418

  #12418 (Bug)

  CVS: When scanning for RCS files, store listing and close handle before recursion.


--------------------------------------------------------------------------

Release PUBLIC.Main.12406

  #12406

  CVS: Bug fix for labels on dead RCS *n.1 revisions.

  Skip labeling a 'dead' RCS file if it is the first revision on that branch,
  as 'dead' revisions are not added to Perforce, there is not revision to Label.


  #12405

  CVS: Save change list data to a JSON formatted file 'changes.json'.


  #12397

  CVS: Separate sort behaviour from Perforce changelist processing.


  #12386

  CVS: Prevent CVSROOT dir from being added.


--------------------------------------------------------------------------

Release PUBLIC.Main.12339

  #12339

  Performance improvements for the early stages of the CVS list building:

   - Building branch list
   - Building revision list


  #12334

  Bug fix to close newDirectoryStream resource.


  #12325

  CVS fix for RCS @b@ expand binary detection.


--------------------------------------------------------------------------

Release PUBLIC.Main.12320

  #12319

  CVS now supports formating label names using com.p4convert.cvs.labelFormat.

  The default is '{symbol}', where the string '{symbol}' is replaced by the CVS
  symbol used for that label.


  #12300 (Bug 192)

  Prevent first entry 'dead' revisions (n*.1) for CVS revisions from showing up
  as branched revisions.


  #12260

  Rename badly encoded paths for CVS RCS files.
  
  First try CP1252, if that fails use a URI encoded path.  If a URI encoded path
  is used then it will be decode to UTF8.


--------------------------------------------------------------------------

Release PUBLIC.Main.12235

  #12235 (Bug 84)

  CVS now supports the --users flag for CVS returning a list of usernames.
  The map file can then be used to remap usernames during the import.


--------------------------------------------------------------------------

Release PUBLIC.Main.12224

  #12222

  New non-translate mode for high-ascii files.

  If the com.p4convert.p4.translate mode is disabled then text files with high-ascii
  characters are given the new type RAW-TEXT. Raw types are not translated and the
  content is used as-is. With the exception of UTF16/32 files.


  #12219

  Update ICU4J libs to 54_1_1


--------------------------------------------------------------------------

Release PUBLIC.Main.12195

  #12195

  CVS - Use the RCS 'expand' field to detect BINARY files.  If set this will take 
  precedence over the type map.


  #12185

  CVS: Avoid labeling dead revisions.
  
  
--------------------------------------------------------------------------

Release PUBLIC.Main.12035

  #12035

	SVN: Look for previous change in ChangeMap when missing a Subversion revision 
	entry. 
	
	Issue is normally due to filtered SVN dumps.
	

--------------------------------------------------------------------------

Release PUBLIC.Main.12004

  #12001 (Bug 145)

  CVS: Fix 'dead' 1.1 revisions from showing up as branched revisions.


  #11979 (Bug 166)

  CVS: Fix label view when tagging files in later changes.


  #11978 

  Upgrade p4java to 2014.1


  #11970 

  CVS: added --repo override for CVSROOT.


--------------------------------------------------------------------------

Release PUBLIC.Main.11901


  #11901 

  SVN: Added command-line flags to support incremental conversions.

  Users can now use --start and --end flags to control the SVN revision range imported.
  The existing --repo flag if specified will override the configuration file.


  #11843 

  Change --info report to include 'delete' entires in revision count.

  Previously 'delete' entries were counted as '-1' which could lead to a negative 
  result. They still add to the rev table and so should be positive.


--------------------------------------------------------------------------

Release PUBLIC.Main.11836 


  #11836 

  CVS: Fix path translation for labels.

  Allows the use of a path map or com.p4convert.p4.subPath definition when CVS labels are
  enabled.


--------------------------------------------------------------------------

Release PUBLIC.Main.11823
  

  #11823 #11762 

  Modified the --default flag to generate default entries for the client root and server
  root.

  The configuration defaults to:
    com.p4convert.p4.root           [pwd] + 'p4_root/'
    com.p4convert.p4.clientRoot     [pwd] + 'ws/'
    

  #11760 

  Use default label description and append label type.

  Previously I used the change description, which is ok for Automatic labels, but Static 
  labels may include more than one change.


--------------------------------------------------------------------------

Release PUBLIC.Main.11751
  

  #11751 

  SVN: Support branching with multiple sources.

  Only applies when SVN_MERGEINFO is enabled.  Import mode requires a resolve step on 
  the branch.


  #11750 

  SVN: Relax dump file parsing with NodeEntry order.

  Allows the parsing of malformed data from svndumpfilter.


  #11745 

  CVS: Parse non-standard RCS file, where 'log' and 'text' are on the same line.  
  Support alternative delete method


--------------------------------------------------------------------------

Release PUBLIC.Main.11565


  #11565 

  SVN: Write submitted change number to Change Map.

  The pending change was being written to the changeMap.txt even though the submitted 
  number was reported in the log.


--------------------------------------------------------------------------

Release PUBLIC.Main.11457


  #11457 

  CVS: Support empty an 'branch' symbol.

  Generally the branch symbol is only added with an ID, however the RCS spec does not
  specify that an ID is mandatory.  This change is to support manufactured CVS data 
  from 3rd party import tools.


  #11453 

  CVS: Write empty files for corrupt RCS revisions.

  Fix for CVS crash on corrupt RCS data.


--------------------------------------------------------------------------

Release PUBLIC.Main.11310


  #11309 

  CVS/SVN: Avoid double encoding a URI path the converter decodes the path and stores 
  it in UTF8.


  #11297 

  Added .der to types map. (DER extension is used for binary DER encoded certificates)


  #11273 

  SVN: Add --tag=n option to search for labels in the SVN data.

  Example use:

    java -jar p4convert.jar --type=SVN --repo=svn.dump --tags=2

    Sample output:
    ... A:1 tags/1.0.4/
    ... D:2 tags/7.04.3/

    Key:
       A - Automatic label
       S - Static label
       D
       

--------------------------------------------------------------------------

Release PUBLIC.Main.11248


  #11248 

  CVS: When branching from a label downgrade to ADD and use RCS content.


  #11227 

  CVS: Create MERGE action for branch with content on deleted revisions.


--------------------------------------------------------------------------

Release PUBLIC.Main.11188


  #11186 

  Support standard command line arguments.

  The change was needed to extend the current features like --info and --user for CVS
  and future SCM support.
  

  #11171 

  CVS/SVN: Path translation support for '$' and other regex chars.


  #11156 

  CVS/SVN: Path translation support for {nnn}

  Some SCM path contail '{nnn}' where nnn is a number, this caused the group regex 
  to fail.


  #11144 

  CVS: Bug fix for strange case of a (dead) 1.1 revision.

  This seems to occur when the source is from another branch.  Not a perfect solution
  as I change this action to an add, but it allows the conversion to complete and no
  content is lost.


  #11143 

  (work around) CVS: Downgrade branching a deleted rev to a warning.

  CVS seems to allow revisions to be added on a branch then moved to 1.1 at the same
  point in time.  The strange part is 1.1 is marked as dead.


  #11109 (Bug 115)

  SVN: Import mode - avoid reverting a pending delete on a file revision if followed 
  by a remove dir action. 


  #11071 

  (undoc) 	Path map translator for CVS and SVN paths.
	
	To use create a path.map file with regex and group match.  Only the first matching 
	entry is used.  The regex and group match are seperated by ', ' (or in regex terms
	',\s+').  Lines starting with '#' are ignored.
	
	For example, 'trunk' is renamed to 'main', but other entries are left as-is.
	
	# path.map
	trunk/(.*), //import/main/{1}
	(.*), //import/{1}
	
	Note: if no file is found the default 'depot' and 'subPath' options are used to 
	generate the map, preserving the original behaviour.
	
	CVS paths will always stat with the 'branch' name.  'main' for 1.1 and the symbol for
	other branches.
	
	# path.map
	main/projA/(.*), //import/projA/MAIN/{1}
	release_(.*)/projA/(.*), //import/projA/REL{1}/{2}
	(.*)/projA/(.*), //import/projA/TAG-{1}/{2}
	(.*), //import/unexpected/{1}


  #11064 (Bug 80)

  CVS: added detection and support for +x revisions


--------------------------------------------------------------------------

Release PUBLIC.Main.11061


  #11048 #11047 #11043 #11042 #11041 #11040 #11031 #11030 #11029 #11025 #11024 
  #11018 #11017 #11016 (Bug 117)
  
  CVS/SVN: Label support for Automatic and static labels in both IMPORT and
  CONVERT mode.


  #11005 

  Changed default user/client to 'p4-user' and 'p4-client'.  


--------------------------------------------------------------------------

Release PUBLIC.Main.11000


  #10997 

  CVS: use a dynamic time window when processing pseudo branches.


--------------------------------------------------------------------------

Release PUBLIC.Main.10988


  #10983 (Bug 118)

  SVN: Updated change number mapping.

  Use the submitted change number not the pending number, for the changeMap.


  #10952 

  CVS add 1ms delay to pseudo branches.


  #10945 

  CVS branch of a branch, RCS ID was not calculated for branch.


  #10921 #10920 (Bug 89)

  CVS intern Strings to help reduce memory. 
  
  (Use Java 7 or greater)


  #10919 (Bug 88)

  CVS parse detection of 'comment' in RCS header.


  #10916 (Bug 78)

  CVS Unicode Translation support.


  #10910 

  CVS progress counters for large conversion.


  #10882 

  CVS non branched revisions.

  Address issue when adding files to a branch that have no connection to main.  CVS 
  identifies these as 'dead' revisions on main with a branch.


  #10877 (Bug 90)

  Fix to add a warning if data block is missing.

  Unbranch operation fixes to follow (when unrelated files are added to branches 
  off main)


--------------------------------------------------------------------------

Release PUBLIC.Main.10795


  #10774 (Bug 77)

  CVS: Updated end of RCS content block detection.

  An @ character at the end of the line followed by a blank line could fool the 
  converter into exiting the block early.  Detection now uses original line with 
  expanded @@ and counts odd/even.


  #10773 (Bug 75)

  Added Audit Log support to CVS.

  CVS does not store an MD5 with the RCS delta, so the field is set to zeros.


  #10772 (Bug 52)

  Removed unused doc build files and old html docs.

  Documentation is build with ant rules:

    ant docs   (pdf documents)
    ant web    (web pages)

  Also included in release rules:

    ant -Dversion=PUBLIC.change_number release


  #10730 #10728 

  CVS: new Label feature.

  Scans the RCS tree counting revisions on a branch.  If the branch only has one 
  revision it gets downgraded to a Label.  Support added for Import and Convert mode.

  Activate using:

    com.p4convert.cvs.labels=true


  #10705 

  CVS: Added condition to support a 'dead' 1.1 revision.


  #10703 

  Import Mode: Fix for add + branch in the same change.
  Convert Mode: Allow add + branch, but copy +x and other properties to new object.	


  #10689 

  Port SVN symlink fix (missing target)


  #10655 

  Fixed buffered writer.  Fills buffer with one or more lines upto 8K and then save 
  remainder. Includes line/EOF (null) detection.


  #10654 

  Added hidden configuration option for the max line buffer for reading a binary file.

  hidden.maxLineBuffer = (default) 10*1024*1024


  #10497 

  New low-level RCS reader using a byte[] to manage CVS lines.  

  Designed to help with the processing of BINARY data in RCS files.  The line reading
  code still looks for a unix style '\n', but has a MAX LINE (hard coded to 10K). 
 

  #9807 

  Initial import of p4-convert (from change 894340)


--------------------------------------------------------------------------

Bugs fixed in 2014.1

  #950218 (Bug #75190)
  
  Allow add + branch, but copy +x and other properties to new object.


  #949303 (Bug #75631)
  
  Fix for Import mode; when a file is renamed (case only) and contains
  an edit. The branch part of the rename is now downgraded to an EDIT.


  #948124 
  
  New Web and PDF documents
  
  
  #947285 (Bug #75642)
  
  Fix for Symlinks with no target.  Converter now report a warning and
  uses a dummy '_unset_' value for the target.
 
 
  #894336 (Bug #73985)
  
  Filter for'+x' modifier on Symlinks.


	#872553 #872245 (Bug #73235 #72982)
	
	During a Replace operation (R:D) + (SUB:B:D) all opened files were reverted.  
	The Import mode now runs a preview integration first, then reverts only open files 
	that have targets for the integration.	
	

	#872082 (Bug #72981)

	Fixed second REMOVE action to not revert, but revert AND remove.


Patches after 2013.1

	#857075 (Bug #64029)
	
	Abort the conversion if Text-delta is detected.
	

	#853349 #856543 (Bug #72701)
	
	Set client clobber option to avoid, safe sync protection introduced in 14.1
	

	#848224 (Bug #72822)

	Fixed processing of line endings when a 'text' file is identified using the typemap.
	

	#846592 (Bug #72811)

	During a SVN roll back operation if the user edits the file, then p4 copy cannot be 
	used.  The code now falls back to manual edit (pre 10.2 mode).


	#802912 (Bug #71815 #67509 #62886)
	
	Type map enhanced to include 'text' and 'unicode'.	For example mapping like 
	'text //....java'.  
	
	Note: if the converter fails to find a character mapping for the file it is no 
	longer downgraded to BINARY, but stored as TEXT and the content left as-is.  The 
	as-is content will NOT include Line Ending conversions, BOM removal or Character 
	Map translation.
	  

	#718459 (Bug #69161)

	Fix to allow automatic resolve of binary files using setForceTextualMerge() 
	option in p4java, equivalent to '-t' flag.


	#712269 (Bug #68935)
	
	Fix to 'Node-path' parse detection to ignore subsequent delimiters (': ') that 
	might occur in a file path.


Internal new functionality in 2013.1

	#704024 (Bug #68652)
	
	SVN property parse support for non windows-1252 high ascii code pages.  
	
	Optional configuration option 'com.p4convert.svn.propTextType' can be set
	to a specific code page for SVN properties:  
	
		BINARY					ISO-8859-2		
		US-ASCII				ISO-8859-5		
		UTF-8					ISO-8859-6		
		UTF-16BE				ISO-8859-7		
		UTF-16LE				ISO-8859-8		
		UTF-32BE				windows-1251	
		UTF-32LE				windows-1254	
		Shift_JIS				windows-1252	
		ISO-2022-JP				windows-1256	
		ISO-2022-CN				KOI8-R			
		ISO-2022-KR				ISO-8859-9		
		GB18030					IBM424_rtl					
		EUC-JP					IBM424_ltr		
		EUC-KR					IBM420_rtl		
		Big5					IBM420_ltr	
		ISO-8859-1				UNKNOWN	 (default)
		
	The first scan is always 'UTF-8' followed by the configuration option.  BINARY 
	implies a skip and the string '<binary property>' is inserted.
		

	#702766 (Bug #68510)
	
	By default RCS keyword expansion attributes are imported; however setting the
	configuration option 'com.p4convert.svn.keepKeyword' to 'false' will ignore all
	previous keyword attributes and import the files as normal text.
	

	#693333 (Bug #68191)
	
	Missing 'COPY' support (C:F) for file integrations.


	#688730 (Bug #67815, #67909)
	#688720 (Bug #67775)
	
	Support replacing a file/symlink with a directory.  The fix includes a new action 
	type 'C' COPY which represents a Subversion 'replace' action that has a 'copyfrom' 
	Node.  Normal 'replace' actions remain identified as 'U' UPDATE actions.
	

	#687931 #687905 (Bug #67716)
	
	Roll back imporvments for files and symlinks.


	#686737 (Bug #67668)
	
	Line ending translation fix for MAC style '\r' characters.


	#679015 (Bug #67530)
	
	Allow a file to be replaced with a directory by deleting the previous file revision.
	

	#678249 (Bug #67532)
	
	Support coping a file over a symlink with no target.
	

	#676714 (Bug #67548)
	
	Updated ICU4J libraries to 51.2 improving Cyrillic detection.
	

	#669199 (Bug #67263)
	
	Support for replacing a symlink revision with a file.
	

	#668788 (Bug #67167)
	
	Limit conversion user to work at 'admin' level (previously 'super' was required.
	User must login before listing users due to configurable 'run.users.authorize'.


	#668166 (Bug #66986)
	
	Updated filtering to p4java INFO message 'Unknown client error'
	
	
	#664667 (Bug #66790, #67069)
	#656616 (Bug #66683)

	Remove the use of Stub files as a workaround for symlink bugs in p4java.



Bugs patched after 2012.2 

	#655899 #655901 #655903 (Bug #66707, #66649, #66638)

	Tidy up of Warning messages from p4-java and workaround for 10.2 tamper check error.
	

	#652698 (Bug #66620)
	
	Report conversion tool version information in log and console output:
		jar build version: 		12.2.652698
		
		
	#652651 (Bug #66509)
	
	Configuration exception check when connecting to a live Perforce server.  If the 
	Unicode counter was not set users would see a cryptic error:
		'User nouser doesn't exist.'
		 

	#648309 (Bug #66427)
	
	Fix in the detection of ADD/EDIT action after the REMOVE part of UPDATE case.
	(regression from #636750) 
	

	#648284 (Bug #66429)
	
	Fixed the detection of previously deleted files when adding a new revision.
	(regression from #636750) 
	

	#645509 (Bug #66128)
	
	A fix to sub node/block detection; only 'delete' actions with a sub 'copyfrom'
	action are detected.  Marked in the log with 'SUB:B:F' for branched files.
	

	#636750 (Bug #65984)
	
	Support SVN 'replace' actions as Action.UPDATE or 'U' in log. A 'replace' action
	deletes the node and replaces it with the following actions.


	#633528 (Bug #65781)

	Subversion merge information is computed in SVN revisions and not Perforce 
	change-lists.  However when querying Perforce the SVN revision number must be 
	translated to a Perforce change-list using the ChangeMap class.


	#631017 (Bug #65254)
	
	A fix to the archive format for symlinks preventing p4 status / p4 reconcile from 
	marking the symlink as changed and trying to open for edit.
	

	#591267 (Bug #63446)
	
	Added a sample SLF4J configuration file for trace and debug.


	#593032 (Bug #63611)

	Change counter was offset by 1 after using the 'Convert mode', so subsequent
	migrations using 'Import mode' did not match SVN revisions 1:1.


	#594830 (Bug #63621)
	
	Store a generated version string at release time in the default.cfg file.
	
	
	#594824 (Bug #63660)
	
	Support empty subversion revisions (resulting after 3rd party filter tools).
	
	
	#594807 (Bug #63662)
	
	Added missing '/n' to audit log after header comment.
	
	
	#601206 (Bug #63888) 
	#605402, #604770 (Bug #64302)
	
	Support an empty Node-Path; implies a '//...' and is sometimes used by Subversion
	to set properties for the whole repo.  The '--info' option now counts the number of
	empty Node-Paths as an indication of corrupt or a hacked data set. 
	

	#602959 #603679 (Bug #64220)

	Missing revisions in branch operations are reported as skipped; this is due
	to an earlier Subversion sub-action where the rollback step was missing.
	
	The fix results in the following behavioural changes:	
	
	'Convert mode'	- 	Overlays the delete action with a roll-back to last revision.
					 	Note that a branch to same path not allowed by a P4 client.

	'Import mode' 	- 	Reverts the pending delete then attempt the integration.  
						The integration will be skipped at resolve and may leaving
						an empty change.

	
	#605415 #610235 #611875 (Bug #64347 #64391)
	
	Support Subversion merge-info across the directory hierarchy, in complex merge
	operations including:
	
		- Cherry picked revisions
		- Multiple revision ranges
		- Indirect merges
		
	
	#622215 #623359 (Bug #65174 #65254) 
	
	Added non-zero return codes for Warnings and Errors:
	
		OK(0)			All OK, no warnings
		USAGE(1)		Usage error
		SHUTDOWN(2)		Trapped 'Ctrl C' break signal
		WARNING(3)		Warning count greater than 0
		EXCEPTION(4)	Trapped Exception



New functionality in 2012.2

	#551486 (Bug #61340)

	SSL support.  Configuration for non ssl uses sets the configuration 
	'com.p4convert.p4.port' to 'localhost:4444' or for SSL 'ssl:localhost:4444'


	#543222 (Bug #58715)

	Documented include/exclude maps for selecting Subversion paths to import.
	Maps now matching SVN paths with java regex:
	
	Basic examples:
	
	1. Only import files with the extension 'yml':
	
	    <include.map>
	        .*\.yml
	
	    <exclude.map>
	        .*
	
	2. Exclude the subversion folder apimanager/trunk/app/...
	(where apimanager is the top level directory)
	
	    <exclude.map>
	        ^apimanager/trunk/app.*


	#533890, #533813, #533075, #533024, #533015, #530602, #530598, #529183,
	#528009, #528002, #527580, #527319, #527295, #527285  (Bug #56426)

	MergeInfo imported as INTEG actions.
	
	Subversion stores integration history on the target (about its sources) as 
	properties.  The properties can be on FILE nodes or DIR in pending changes.  
	Subversion uses the key svn:mergeinfo with a value of the form:
	
	    <path>:<done range>,<exclude>,<exclude>...
	
	Ranges are in the form nnn-nnn or just nnn; there is only one done range 
	(accounted for integrations), but there can be one or more exclude ranges 
	(ignored revisions).  In some data sets an '*' my appear on the end to 
	indicate non-inheritable mergeinfo.
	
	 - Support multi merge source data for Convert and Import mode.
	 - Branch actions sources are marked as BRANCH and not MERGE_IGNORE
	 - Added ignore action credit IGNORE/IGNORE_BY
	
	Currently the feature is disabled, change to 'true' to enable, e.g.:
	
	    com.p4convert.svn.mergeInfoEnabled=true
	    
	
	#522555, #522541, #522537 (Bug #59517)

	Type map to be used for identifying binary files ONLY.  Do not use try to
	force 'unicode' as 'text' in a mapping like 'text //....java'.
	
	To use create a local file 'types.map' using the Perforce typemap format.  
	  - only paths of the form '//....xxx' are supported, any other path like 
	    '//depot/foo/....xxx' are ignored.
	  - only types: binary+mxwlk are supported. 
	
	Type map is required for small or empty binary files (e.g. zip, gif...) as 
	ICU4J cannot determine if it is binary.  


	#512452 (Bug #58685, Bug #58790)

	The user translation map (--users) is now generated with the original 
	Subversion username on the LHS and the filtered name on the RHS.  The filter
	removes Perforce reserved chars (removing #, @, *, %, ... and replacing " " 
	with "_").
	
	The same filter is used post translation in case the RHS contains reserved 
	chars.
	
	Loading the filter reports the file and number of mappings.  For example:
	
	    Loaded user translation map 'users.map'; 27 user names remapped.


	    
Internal new functionality in 2012.2

	#553863 (Bug #61622)

	Skip REMOVE actions if there were no previous revisions.  This case is seen
	where cvs2svn adds REMOVE actions when the revision does not exist.
	
	
	#575401 #553849 #545744 #534836 (Bug #61619, Bug #61200, Bug #62540)

	Files larger than 10MB (set as hidden config option) are compress archive 
	with +C flag (mimics server behaviour)
	
	
	#551485 (Bug #61351)

	Case sensitive rename support in Import mode for case insensitive servers 
	using FIRST mode for file and directories.  
	
	
	#546739 (Bug #60117)

	Support for windows-1252 encoding in property values. Property values 
	falling outside UTF-8 or windows-1252 will throw an exception.
	
	
	#545239 

	Added progress class (to indicate progress when parsing logs)
	
	
	#543187 (Bug #60034)

	Password support for security level greater than 0.  
	
	The com.p4convert.p4.user must have 'super' level access and its password
	set in com.p4convert.p4.passwd.  This removes the  UserPool and Protection
	ProtectionTable classes.  Instead the pending change is submitted as the 
	super user then the Owner field is modified along with the date.
	
	
	#524827 (Bug #59703)

	Reports the longest Subversion path when using --info
	
	
	#524816, #534787 (Bug #59820)

	Added @nx@ note record (type journal header) to protect against uses not
	setting C1 / C0 flags when replaying the journal.  Server version is 
	reported as 0 giving a big hint the the admin that 'p4d -xu' needs to be
	run.
	
	
	#515846 (Bug #58083)

	Changed all logging from java.util.Logger to SLF4J + log4j.  Logging 
	configuration is defined in file 'prop/slf4j.xml' and built into the 
	deployed jar.
	
	Console output is at INFO and file logging is set to DEBUG (TRACE is not on
	by default).  Logging is appended to a file called 'converter.log' and is 
	rotated at 300MB and purged after 5 rotations.
	
	Audit log has been reimplemented to use a Buffered Output Stream.
	
	Schema upgraded to 5.x (as logging section has been moved to to xml file)
	
	
	#504626 (Bug #58713)

	Codepage support for windows 1252.
	
	
	
Bugs fixed in 2012.2

	#557022 (Bug #61663)

	Disable RPC_SOCKET_SO_TIMEOUT_NICK timeout.


	#534395 (Bug #57600)

	Suppress 'all revision(s) already integrated' message.
	
	
	#520565 (Bug #59456)
	
	Clean up of warning message if a path delimiter is missing and included 
	examples in the default configuration file.
	
	
	#511728 (Bug #58826)

	Attempt to re-encode text files if the wrong encoding was found with ICU4J.	
	Windows CP1252 is used to try to encode the file as it is often miss 
	identified.  Should this fail then, as before, the file is downgraded to 
	BINARY.  If a file is downgraded to binary it will not have had it's 
	line-endings processed and if changed to TEXT may have corrupt line-endings.
	

--------------------------------------------------------------------------

New functionality in 2012.1

	#440198, #463676 (Bug #54093) 
	
	Subversion revision or node extraction feature
		
		java -jar p4convert.jar --extract rev.node <dump file>
		
		
	#452368 (Bug #54101)
	
	Imports can now be located in a sub directory of a depot.
	
	Set the option com.p4convert.subPath to the sub directory required.  Do not
	include the depot path or start with a '/', however paths must end with a 
	'/' even if it is not being used.
	
	For example, to import files under "//import/sub/..." set:
	   com.p4convert.depotPath: import
	   com.p4convert.subPath=sub/
	
	
	#457421, #462801, #464411 (Bug #54796, Bug #55837, Bug #55838) 
	
	File type detection now uses icu4j libraries and improved IO buffering.
	
	Any file type detection below 30% is assumed to be binary unless it only
	contains valid ascii characters.  Only the first 1024K of the file is 
	scanned.	
	
	
	#463714 (Bug #54094)
	
	Subversion Path exclusion

	Prescans data to validate path exclusion map (and inclusion). If all ok, 
	then conversion starts, skipping any excluded files or directories.
	
	Exclusion map 'exclude.map' only matches strings (no wild cards), except 
	for a single '*' to exclude everything (works well with include map).  
	Comments can be added by starting the line with a '#'.
	
	For example ('exclude.map'):
	   Database/NOE/noe_migrate/tags
	
	... will skip all content under 'Database/NOE/noe_migrate/tags'.
	
	
	#464439 (Bug #55528)
	
	Split configuration into groups and format the configuration file with 
	comments.
	
	
	#451897, #485654 (Bug #53543)
	
	Reformat Subversion revision descriptions to include the revision ID using
	the template:
	
	    <rev> substituted with the Subversion revision
	    <description> substituted with the Subversion log
	
	Default (as-is): com.p4convert.svn.logRevID="<description>"
	
	
	#488856 (Bug #54693, Bug #56719, Bug #57642)
	
	Prescan a Subversion dump file to determine system requirements.
	
		java -jar p4convert.jar --info
	
		
Internal new functionality in 2012.1

	#449830 (Bug #55030)
	
	Added a hook to trap Ctrl-C and exit cleanly, saving the ChangeMap and 
	finishing the last action.
	
		
	#481859 (Bug #56784)
	
	Support UTF32 for non-unicode and unicode enabled servers. Down grades to 
	binary, or stores as utf8 as required.
	
	
	#485650 (Bug #54693)
	
	Support protection table access for Import mode.  Allowing the update of 
	protections when adding content to existing servers.
	
	
	#485653 (Bug #53591, Bug #54693, Bug #56325)
	
	Re-implementation of p4 java connection to reuse server connection and 
	client workspace.
	
	
	#486819 (Bug #57513)
	
	Cleanup of invalid Subversion usernames:
	
		Invalid characters removed: '*', '%%', '@', '#', '...'
		Invalid characters replaced: ' ' with '_'
	
		
	#488095, #489306 (Bug #54693)
	
	Cache of active Perforce users.  Pool based on the number of free user 
	licenses.


	
Bugs fixed in 2012.1

	#437285 (Bug #53680)
	
	Handle extremely large changelists


	#437286, #451367 (Bug #53779)
	
	Support invalid SVN dumpfile schemas with 'null' MD5 strings.


	#449810 (Bug #55336)
	
	Support rename of files only by case.  Reverted on case aware platforms or
	renamed on cases sensitive platforms.

	
	#450757 (Bug #55031)
	
	Unicode support for property key pair values.  Read the specified number 
	of bytes and will throw a runtime exception if the reported length does 
	not match the amount of bytes read.
	
	
	#451356 (Bug #55225)
	
	Detect platform case sensitivity used when generating the default 
	configuration.


	#451465 (Bug #54839)
	
	Product version stored in MANIFEST and reported in configuration file.


	#464459 (Bug #55167)
	
	Bug fix to convert mode to sync to the old version of file when rolling 
	back an edit action in Subversion.


	#465169 (Bug #53025)
	
	Bug fix to only remove '\r' chars when used as line endings.
		
	The Configuration option 'com.p4convert.adv.lineEnding' only converts 
	'\r\n' to '\n' when true (default).  Any isolated '\r' chars are not 
	treated as line ending chars and left as-is (i.e MAC line endings are not 
	converted -- may be an issue with the backdoor archive files).
	
	
	#470599, #471132 (Bug #56371)
	
	Trim invalid white space from SVN dump file header attributes


	#472249 (Bug #56440)
	
	Spelling; changed default value of com.p4convert.svn.propName to 
	.svn.properties


	#481323 (Bug #56686)
	
	SVN users rolling back a branch to an earlier point would cause the 
	'front-door' to try to integrate between the same source/target.
	
	For branch roll back operations (Import Mode) now uses p4 copy.  If the 
	server is older than 20111,	then the sync to old change and then re-add 
	steps are used. 
	
	
	#485989 (Bug #57117)
	
	Bug fix for file modification bits.  File modification bits (e.g. +x) were
	not propagated to the next revision in Import Mode.


	#486808 (Bug #53572)
	
	Traps null Action objects.  Logs Subversion records to file where actual 
	Subversion file content is replaced with a block count.

	
	#489576, #489584 (Bug #57658)
	
	Fix to support a base-less copy where source is a deleted revision.
	
	Convert mode: if the source is a delete then the target will also be 
	deleted.  No integration records are created by default; however if the 
	following option is set:
	
	    com.p4convert.adv.downgrade=true
	
	then integration records are created for the delete (to match integ 3+).

	Import mode: if the source is a delete then the target will also be deleted.
	Includes patched for integration credit (how is now copy from/into) and 
	resolve option to 'copy' source (-at).
