Package org.tmatesoft.svn.core.wc
Class DefaultSVNDiffGenerator
- java.lang.Object
-
- org.tmatesoft.svn.core.wc.DefaultSVNDiffGenerator
-
- All Implemented Interfaces:
ISVNDiffGenerator
public class DefaultSVNDiffGenerator extends java.lang.Object implements ISVNDiffGenerator
DefaultSVNDiffGenerator is a default implementation of ISVNDiffGenerator.By default, if there's no any specified implementation of the diff generator's interface, SVNKit uses this default implementation. To set a custom diff driver use
setDiffGenerator().- Since:
- 1.2
- Version:
- 1.3
- Author:
- TMate Software Ltd.
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.io.InputStreamEMPTY_FILE_ISprotected static java.lang.StringHEADER_SEPARATORprotected static java.lang.StringPROPERTIES_SEPARATORprotected static java.lang.StringWC_REVISION_LABEL
-
Constructor Summary
Constructors Constructor Description DefaultSVNDiffGenerator()Constructs a DefaultSVNDiffGenerator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.io.FilecreateTempDirectory()Creates a temporary directory for diff files.voiddisplayAddedDirectory(java.lang.String path, java.lang.String rev1, java.lang.String rev2)Does nothing.protected voiddisplayBinary(java.io.OutputStream os, java.lang.String mimeType1, java.lang.String mimeType2)voiddisplayDeletedDirectory(java.lang.String path, java.lang.String rev1, java.lang.String rev2)Does nothing.voiddisplayFileDiff(java.lang.String path, java.io.File file1, java.io.File file2, java.lang.String rev1, java.lang.String rev2, java.lang.String mimeType1, java.lang.String mimeType2, java.io.OutputStream result)Writes the difference betweenfile1andfile2as they are seen inrev1andrev2toresult.protected booleandisplayHeader(java.io.OutputStream os, java.lang.String path, boolean deleted)protected voiddisplayHeaderFields(java.io.OutputStream os, java.lang.String label1, java.lang.String label2)voiddisplayPropDiff(java.lang.String path, SVNProperties baseProps, SVNProperties diff, java.io.OutputStream result)Produces properties difference and writes it toresult.protected java.io.FilegetBasePath()SVNDiffOptionsgetDiffOptions()Gets the diff options that are used by this generator.protected java.lang.StringgetDisplayPath(java.lang.String path)java.lang.StringgetEncoding()Returns the encoding used for diff output.byte[]getEOL()Returns the EOL marker bytes being in use.protected java.lang.StringgetExternalDiffCommand()java.lang.StringgetGlobalEncoding()Returns the encoding specified by svnkit.global-charset option of the global configuration.protected java.lang.StringgetLabel(java.lang.String path, java.lang.String revToken)protected ISVNOptionsgetOptions()booleanhasEncoding()Says whether this generator is using any special (non-native) charset for outputting diffs.booleanhasEOL()Says whether this generator is using any special (non-native) EOL bytes for outputting diffs.voidinit(java.lang.String anchorPath1, java.lang.String anchorPath2)Initializes this generator with old and new diff anchor paths.booleanisDiffAdded()Tells whether added files must be diffed also.booleanisDiffCopied()Tells whether deleted files must be diffed also.booleanisDiffDeleted()Tells whether deleted files must be diffed also.booleanisDiffUnversioned()Says if unversioned files are also diffed or ignored.booleanisForcedBinaryDiff()Tells if this generator forced binary files diff.protected booleanisHeaderForced(java.io.File file1, java.io.File file2)voidsetBasePath(java.io.File basePath)Sets the base path that must be stripped from the front of the paths of compared files.voidsetDiffAdded(boolean isDiffAdded)Enables or disables diffing added files.voidsetDiffCopied(boolean isDiffCopied)Enables or disables copied files diffing.voidsetDiffDeleted(boolean isDiffDeleted)Enables or disables diffing deleted files.voidsetDiffOptions(SVNDiffOptions options)Sets diff options containing diff rules.voidsetDiffUnversioned(boolean diffUnversioned)Includes or not unversioned files into diff processing.voidsetEncoding(java.lang.String encoding)Sets the encoding to use for diff output.voidsetEOL(byte[] eol)Sets the EOL bytes to use in diff output.voidsetExternalDiffCommand(java.lang.String command)Sets an external diff program for producing the difference between files.voidsetFallbackToAbsolutePath(boolean fallback)Controls whether error is reported on failure to compute relative display path, or absolute path is used instead.voidsetForcedBinaryDiff(boolean forced)Sets whether binary files diff must be forced or not.voidsetOptions(ISVNOptions options)Sets global run-time options.voidsetRawDiffOptions(java.util.Collection options)Sets a collection of raw (String) diff options.protected booleanuseLocalFileSeparatorChar()
-
-
-
Field Detail
-
PROPERTIES_SEPARATOR
protected static final java.lang.String PROPERTIES_SEPARATOR
- See Also:
- Constant Field Values
-
HEADER_SEPARATOR
protected static final java.lang.String HEADER_SEPARATOR
- See Also:
- Constant Field Values
-
WC_REVISION_LABEL
protected static final java.lang.String WC_REVISION_LABEL
- See Also:
- Constant Field Values
-
EMPTY_FILE_IS
protected static final java.io.InputStream EMPTY_FILE_IS
-
-
Method Detail
-
init
public void init(java.lang.String anchorPath1, java.lang.String anchorPath2)Initializes this generator with old and new diff anchor paths.- Specified by:
initin interfaceISVNDiffGenerator- Parameters:
anchorPath1- an old path/URLanchorPath2- a new path/URL
-
setDiffOptions
public void setDiffOptions(SVNDiffOptions options)
Sets diff options containing diff rules.- Parameters:
options- diff options
-
setRawDiffOptions
public void setRawDiffOptions(java.util.Collection options)
Sets a collection of raw (String) diff options.- Parameters:
options- raw options
-
setOptions
public void setOptions(ISVNOptions options)
Sets global run-time options.- Parameters:
options- options implementation
-
setExternalDiffCommand
public void setExternalDiffCommand(java.lang.String command)
Sets an external diff program for producing the difference between files.- Parameters:
command- external diff program
-
setBasePath
public void setBasePath(java.io.File basePath)
Sets the base path that must be stripped from the front of the paths of compared files. IfbasePathis not null but is not a parent path of the target, this will lead to an error during diff. Note:basePathdoesn't affect the path index generated by external diff programs.- Specified by:
setBasePathin interfaceISVNDiffGenerator- Parameters:
basePath- common parent path to strip off the displayed paths
-
setFallbackToAbsolutePath
public void setFallbackToAbsolutePath(boolean fallback)
Controls whether error is reported on failure to compute relative display path, or absolute path is used instead.- Parameters:
fallback- true to make generator use absolute path when relative path could not be computed.
-
setDiffDeleted
public void setDiffDeleted(boolean isDiffDeleted)
Enables or disables diffing deleted files.- Specified by:
setDiffDeletedin interfaceISVNDiffGenerator- Parameters:
isDiffDeleted-- See Also:
ISVNDiffGenerator.isDiffDeleted()
-
isDiffDeleted
public boolean isDiffDeleted()
Tells whether deleted files must be diffed also.- Specified by:
isDiffDeletedin interfaceISVNDiffGenerator- Returns:
- true if deleted files must be diffed also
- See Also:
ISVNDiffGenerator.setDiffDeleted(boolean)
-
setDiffAdded
public void setDiffAdded(boolean isDiffAdded)
Enables or disables diffing added files.- Specified by:
setDiffAddedin interfaceISVNDiffGenerator- Parameters:
isDiffAdded-- See Also:
ISVNDiffGenerator.isDiffAdded()
-
isDiffAdded
public boolean isDiffAdded()
Tells whether added files must be diffed also.- Specified by:
isDiffAddedin interfaceISVNDiffGenerator- Returns:
- true if added files must be diffed also
- See Also:
ISVNDiffGenerator.setDiffAdded(boolean)
-
setDiffCopied
public void setDiffCopied(boolean isDiffCopied)
Enables or disables copied files diffing.- Specified by:
setDiffCopiedin interfaceISVNDiffGenerator- Parameters:
isDiffCopied-- See Also:
ISVNDiffGenerator.isDiffCopied()
-
isDiffCopied
public boolean isDiffCopied()
Tells whether deleted files must be diffed also.- Specified by:
isDiffCopiedin interfaceISVNDiffGenerator- Returns:
- true if copied files must be diffed also
- See Also:
ISVNDiffGenerator.setDiffCopied(boolean)
-
getDiffOptions
public SVNDiffOptions getDiffOptions()
Gets the diff options that are used by this generator. Creates a new one if none was used before.- Returns:
- diff options
-
getDisplayPath
protected java.lang.String getDisplayPath(java.lang.String path) throws SVNException- Throws:
SVNException
-
setForcedBinaryDiff
public void setForcedBinaryDiff(boolean forced)
Sets whether binary files diff must be forced or not.- Specified by:
setForcedBinaryDiffin interfaceISVNDiffGenerator- Parameters:
forced- whether to force binary diff or not
-
isForcedBinaryDiff
public boolean isForcedBinaryDiff()
Tells if this generator forced binary files diff.- Specified by:
isForcedBinaryDiffin interfaceISVNDiffGenerator- Returns:
- true if forces; otherwise false
-
displayPropDiff
public void displayPropDiff(java.lang.String path, SVNProperties baseProps, SVNProperties diff, java.io.OutputStream result) throws SVNExceptionProduces properties difference and writes it toresult.- Specified by:
displayPropDiffin interfaceISVNDiffGenerator- Parameters:
path-baseProps-diff-result-- Throws:
SVNException- in the following cases:-
exception with
SVNErrorCode.IO_ERRORerror code - if an I\O error occurred
-
getBasePath
protected java.io.File getBasePath()
-
displayFileDiff
public void displayFileDiff(java.lang.String path, java.io.File file1, java.io.File file2, java.lang.String rev1, java.lang.String rev2, java.lang.String mimeType1, java.lang.String mimeType2, java.io.OutputStream result) throws SVNExceptionWrites the difference betweenfile1andfile2as they are seen inrev1andrev2toresult.- Specified by:
displayFileDiffin interfaceISVNDiffGenerator- Parameters:
path-file1-file2-rev1-rev2-mimeType1-mimeType2-result-- Throws:
SVNException- in the following cases:-
exception with
SVNErrorCode.EXTERNAL_PROGRAMerror code - if an external diff program exited with an error code value different from0and1exception withSVNErrorCode.IO_ERRORerror code - if an I\O error occurred
-
setEncoding
public void setEncoding(java.lang.String encoding)
Sets the encoding to use for diff output.- Specified by:
setEncodingin interfaceISVNDiffGenerator- Parameters:
encoding- charset name
-
getEncoding
public java.lang.String getEncoding()
Returns the encoding used for diff output.- Specified by:
getEncodingin interfaceISVNDiffGenerator- Returns:
- charset name
-
hasEncoding
public boolean hasEncoding()
Says whether this generator is using any special (non-native) charset for outputting diffs.- Returns:
- true if yes; otherwise false
-
hasEOL
public boolean hasEOL()
Says whether this generator is using any special (non-native) EOL bytes for outputting diffs.- Returns:
- true if yes; otherwise false
-
getGlobalEncoding
public java.lang.String getGlobalEncoding()
Returns the encoding specified by svnkit.global-charset option of the global configuration.- Returns:
- global charset name
-
setEOL
public void setEOL(byte[] eol)
Sets the EOL bytes to use in diff output.- Specified by:
setEOLin interfaceISVNDiffGenerator- Parameters:
eol- EOL bytes
-
getEOL
public byte[] getEOL()
Returns the EOL marker bytes being in use. If no EOL bytes were provided, usesnative EOLfetched from the options.- Specified by:
getEOLin interfaceISVNDiffGenerator- Returns:
- EOL bytes
-
createTempDirectory
public java.io.File createTempDirectory() throws SVNExceptionCreates a temporary directory for diff files.- Specified by:
createTempDirectoryin interfaceISVNDiffGenerator- Returns:
- returns the temp directory
- Throws:
SVNException
-
isDiffUnversioned
public boolean isDiffUnversioned()
Says if unversioned files are also diffed or ignored.By default unversioned files are ignored.
- Specified by:
isDiffUnversionedin interfaceISVNDiffGenerator- Returns:
- true if diffed, false if ignored
- See Also:
setDiffUnversioned(boolean)
-
setDiffUnversioned
public void setDiffUnversioned(boolean diffUnversioned)
Includes or not unversioned files into diff processing.If a diff operation is invoked on a versioned directory and
diffUnversionedis true then all unversioned files that may be met in the directory will be processed as added. Otherwise ifdiffUnversionedis false such files are ignored.By default unversioned files are ignored.
- Specified by:
setDiffUnversionedin interfaceISVNDiffGenerator- Parameters:
diffUnversioned- controls whether to diff unversioned files or not- See Also:
isDiffUnversioned()
-
displayDeletedDirectory
public void displayDeletedDirectory(java.lang.String path, java.lang.String rev1, java.lang.String rev2) throws SVNExceptionDoes nothing.- Specified by:
displayDeletedDirectoryin interfaceISVNDiffGenerator- Parameters:
path- a directory pathrev1- the first diff revisionrev2- the second diff revision- Throws:
SVNException
-
displayAddedDirectory
public void displayAddedDirectory(java.lang.String path, java.lang.String rev1, java.lang.String rev2) throws SVNExceptionDoes nothing.- Specified by:
displayAddedDirectoryin interfaceISVNDiffGenerator- Parameters:
path- a directory pathrev1- the first diff revisionrev2- the second diff revision- Throws:
SVNException
-
getExternalDiffCommand
protected java.lang.String getExternalDiffCommand()
-
getOptions
protected ISVNOptions getOptions()
-
displayBinary
protected void displayBinary(java.io.OutputStream os, java.lang.String mimeType1, java.lang.String mimeType2) throws java.io.IOException- Throws:
java.io.IOException
-
displayHeader
protected boolean displayHeader(java.io.OutputStream os, java.lang.String path, boolean deleted) throws java.io.IOException- Throws:
java.io.IOException
-
displayHeaderFields
protected void displayHeaderFields(java.io.OutputStream os, java.lang.String label1, java.lang.String label2) throws java.io.IOException- Throws:
java.io.IOException
-
isHeaderForced
protected boolean isHeaderForced(java.io.File file1, java.io.File file2)
-
useLocalFileSeparatorChar
protected boolean useLocalFileSeparatorChar()
-
getLabel
protected java.lang.String getLabel(java.lang.String path, java.lang.String revToken)
-
-