==============正文=====================
Description
With the help of the underlying svnClientAdapter, <svn> task uses JavaHL (a native JNI interface to the subversion api) if it can find the corresponding library (e.g. svnjavahl.dll on windows). Otherwise it uses svn command line interface.
Setup
Parameters
Attribute Description Requiredusername | username that will be used for all nested svn commands. | No |
password | password that will be used for all nested svn commands. | No |
javahl | Set to “false” to use command line client interface instead of JNI JavaHL binding. | No (Defaults to true) |
svnkit | Set to “false” to use command line client interface instead of SVNKit binding. | No (Defaults to false) |
dateFormatter | formatter definition used to format/parse dates (e.g. when revision is specified as date). | No (Defaults to "MM/DD/YYYY HH:MM AM_PM") |
dateTimeZone | time zone used to format/parse dates (e.g. when revision is specified as date). | No (Defaults to local) |
failonerror | Controls whether an error stops the build or is merely reported to the screen. | No (Defaults to "true") |
Svn commands specified as nested elements
add
<add>
elements.Attribute | Description | Required |
file | file to add to the repository | No |
dir | directory to add to the repository | No |
recurse | Set to "false" to operate on a single directory only
(applies only when dir attribute is set). Default is
"true"
|
No |
force | Set to "true" to check the contents of a directory that
is already under source control for new directories/files
(applies only when dir attribute is set). Default is
"false"
|
No |
- fileset
Filesets are used to select sets of files to add to the repository.
Note that directories needed to add selected files will be added to the repository even if they are not selected by the fileset.
cat
Attribute | Description | Required |
destFile | Name of the destination file | No (default is the name of the file on the url placed in the ant project's basedir) |
url | Url of the file in repository | Yes |
revision | revision to get. Possible values are : - a date with the format as specified in dateFormatter attribute - a revision number - HEAD, BASE, COMMITED or PREV Default is "HEAD" |
No |
checkout
Attribute | Description | Required |
url | url to checkout from | Yes |
recurse | Set to "false" to operate on single directory only. Default is "true" | No |
destPath | destination directory | Yes |
revision | revision to checkout. Possible values are : - a date with the format as specified in dateFormatter attribute - a revision number - HEAD, BASE, COMMITED or PREV Default is "HEAD" |
No |
commit
Attribute | Description | Required |
file | file to commit | No |
recurse | Set to "false" to operate on single directory only.
Default is "true" Apply only when dir attribute is set. |
No |
dir | directory to commit | No |
message | commit message | Yes |
- fileset
Filesets are used to select sets of files to commit.
copy
source and destination can each be either a working copy (WC) path or URL:
- WC->WC: copy and schedule for addition (with history)
- WC->URL: immediately commit a copy of WC to URL
- URL->WC: check out URL into WC, schedule for addition
- URL->URL: complete server-side copy; used to branch & tag
Attribute | Description | Required |
srcPath | source path | One of the two |
srcUrl | source url | |
testPath | destination path | One of the two |
destUrl | destination url | |
message | commit message | when destUrl is set |
revision | revision to copy from (when srcUrl is set) Possible values are : - a date with the format as specified in dateFormatter attribute - a revision number - HEAD, BASE, COMMITED or PREV Default is "HEAD" |
no |
createRepository
Attribute | Description | Required |
path | Path where to create the new repository | Yes |
<svn javahl="false">
<createRepository path="repository"/>
</svn>
delete
The command will not remove targets that are, or contain, unversioned or modified items; use the force attribute to override this behaviour.
If run on an url, the item is deleted from the repository via an immediate commit.
Attribute | Description | Required |
file | file to delete | No |
url | url to delete | No |
dir | directory to delete | No |
message | commit message | when url attribute is set |
force | default is "false" | No |
- fileset
Filesets are used to select sets of files to delete..
diff
Attribute | Description | Required |
oldPath | If oldUrl is not set, defaults to the path '.' | No |
oldUrl | |
No |
oldTargetRevision | defaults to BASE or, if oldUrl is set, to HEAD | No |
newPath | defaults to oldPath if oldUrl is not set | No |
newUrl | |
No |
newTargetRevision | defaults to the current working version or, if newUrl is set, to HEAD | No |
outFile | Default is 'patch' | No |
recurse | Set to "false" to operate on single directory only. Default is "true" | No |
<svn javahl="${javahl}"> <diff oldPath="workingcopy/diffTest/file.txt" outFile="workingcopy/diffTest/patch.txt"/> </svn>
export
-
Exports a clean directory tree from the repository specified by
srcurl
, at revisionrevision
if it is given, otherwise at HEAD, intodestPath
. - Exports a clean directory tree from the working copy specified by
srcPath
intodestPath
. all local changes will be preserved, but files not under revision control will not be copied.
Attribute | Description | Required |
srcUrl | source url to export from | One of the two |
srcPath | source path to export from | |
destPath | destination path | Yes |
revision | revision of the source url to export from. Defaults is
"HEAD" Possible values are : - a date with the format as specified in dateFormatter attribute - a revision number - HEAD, BASE, COMMITED or PREV |
No (defaults to HEAD) |
ignore
Attribute | Description | Required |
file | file to ignore | One of the two |
dir | directory on which we will update svn:ignore property | |
pattern | pattern to add to svn:ignore on the directory Only when dir is set |
Yes |
recurse | Set to "true" to add the pattern recursively to
directories. Default is "false" Only when dir is set |
No |
<ignore dir="workingcopy/ignoreTest/dir1" pattern="*.ignore" recurse="true"/>
import
Recursively commit a copy of
path
to url
.If
newEntry
is not set, copy top-level contents of path
intourl
directly.
Otherwise, create newEntry
underneath url
and
begin copy there.
Attribute | Description | Required |
path | source path to export from | Yes |
url | source url to import to | Yes |
newEntry | |
No |
message | commit message | Yes |
recurse | Set to "false" to operate on single directory only. Default is "true" | False |
info
Attribute | Description | Required |
target | Directory or file to gather the information about. | Yes |
propPrefix | Prefix to use for the properties. Default is "svn.info.". | False |
verbose | Turns on verbosity for this task. Default is "false". | False |
Property | Description |
path | Always |
name | For files only |
url | Always |
repouuid | Always |
rev | Always |
nodekind | Always |
schedule | Always |
author | Always |
lastRev | Always |
lastDate | Always |
lastTextUpdate | For files only |
lastPropUpdate | For files only |
checksum | For files only |
keywordsset
- URL, HeadURL : The URL for the head version of the object.
- Author, LastChangedBy : The last person to modify the file.
- Date, LastChangedDate : The date/time the object was last modified.
- Rev, LastChangedRevision : The last revision the object changed.
- Id : A compressed summary of the previous
Attribute | Description | Required |
file | File for which keywords will be substituted | Either file, dir or filesets |
dir | All files in this directory will have their keywords substituted (recursively) | Either file, dir or filesets |
keywords | The keywords to substitute on the given files | No |
HeadURL/URL Author, LastChangedBy Date, LastChangedDate Rev, LastChangedRevision Id |
Set to “true“ the keyword to substitute it on the given file. | No |
- fileset
Filesets are used to select sets of files on which to apply keywords substitution.
keywordsadd
The attributes are the same than for keywordsset command.
keywordsremove
The attributes are the same than for keywordsset command.
mkdir
If target is a working copy path the directory is scheduled for addition in the working copy. If target is an url the directory is created in the repository via an immediate commit.
In both cases all the intermediate directories must already exist.
Attribute | Description | Required |
path | path to create | One of the two |
url | url to create | |
message | commit message | Yes |
move
cource and destination can both be working copy (WC) paths or URLs:
WC -> WC: move and schedule for addition (with history)
URL -> URL: complete server-side rename.
Attribute | Description | Required |
srcPath | source path | One of the two |
srcUrl | source url | |
destPath | destination path | One of the two |
destUrl | destination url | |
message | commit message | Yes |
propdel
Attribute | Description | Required |
path | path of the file or directory on which to delete the property | Yes |
name | name of the property to delete | Yes |
recurse | if set, property will be removed recursively | No |
propget
Attribute | Description | Required |
path | path of the file or directory on which to get the property | One of the two |
url | url of the file or directory in repository on which to get the property | |
name | name of the property to get | Yes |
property | the name of the property to set with the value of the svn property | One of the two |
file | file that will contain the value of the property |
<propget path="workingcopy/propTest/file.png" name="svn:mime-type" property="propTest.mimeType"/>
propset
Attribute | Description | Required |
path | path of the file or directory on which to set the property | Yes |
name | name of the property to set | Yes |
value | the value of the property | One of the two |
file | the file that will be used as a value | |
recurse | if set, property will be set recursively | No |
- svn:ignore : A newline separated list of file patterns to ignore.
- svn:keywords : Keywords to be expanded. Valid keywords are:
- URL, HeadURL : The URL for the head version of the object.
- Author, LastChangedBy : The last person to modify the file.
- Date, LastChangedDate : The date/time the object was last modified.
- Rev, LastChangedRevision : The last revision the object changed.
- Id : A compressed summary of the previous 4 keywords.
- svn:executable : If present, make the file executable. This property cannot be set on a directory. A non-recursive attempt will fail, and a recursive attempt will set the property only on the file children of the directory
- svn:eol-style : One of 'native', 'LF', 'CR', 'CRLF'.
- svn:mime-type : The mimetype of the file. Used to determine
whether to merge the file, and
how to serve it from Apache.
A mimetype beginning with 'text/' (or an absent mimetype) is treated as text. Anything else is treated as binary. - svn:externals : A newline separated list of module
specifiers, each of which consists of a relative directory path,
optional revision flags, and an URL. For example
foo http://example.com/repos/zig
foo/bar -r 1234 http://example.com/repos/zag
revert
Attribute | Description | Required |
file | file to revert | No |
dir | directory to revert | No |
recurse | Set to "false" to operate on a single directory only
(applies only when dir attribute is set). Default is
"false" |
No |
revision | revision. Defaults is "HEAD" Possible values are : - a date with the format as specified in dateFormatter attribute - a revision number - HEAD, BASE, COMMITED or PREV |
No |
- fileset
Filesets are used to select sets of files to revert.
status
Attribute | Description | Required |
path | path of the file or directory | Yes |
textStatusProperty | Name of the property to set to the status of the item | No |
propStatusProperty | Name of the property to set to the status of the item properties | No |
revisionProperty | Name of the property to set to the revision of the item (or “” if unversioned) | No |
lastChangedRevisionProperty | Name of the property to set to the last changed revision of the item (or “” if unversioned) | No |
lastChangedDateProperty | Name of the property to set to the last changed date of the item (or “” if unversioned). The date is formatted according to task's "dateFormatter" | No |
lastCommitAuthorProperty | Name of the property to set to the last commit author (or “” if unversioned) | No |
urlProperty | Name of the property to set to the url of the item | No |
- non-svn
- normal : no modifications
- added
- missing : item is missing (removed by non-svn command)
- incomplete
- deleted
- replaced
- modified
- merged
- conflicted
- obstructed
- ignored
- external
- unversioned
- normal : no modifications
- conflicted
- modified
<status path="workingcopy/statusTest/added.txt" textStatusProperty="testStatus.textStatus" propStatusProperty="testStatus.propStatus" lastChangedRevisionProperty="testStatus.lastCommitRevision" revisionProperty="testStatus.revision" lastCommitAuthorProperty="testStatus.lastCommitAuthor"
switch
Attribute | Description | Required |
path | The working copy to switch to the given url | Yes |
url | The url to switch to | Yes |
recurse | Set to "false" to operate on a single directory only. Default is "true" | No |
revision | revision. Defaults is "HEAD" Possible values are : - a date with the format as specified in dateFormatter attribute - a revision number - HEAD, BASE, COMMITED or PREV |
No |
update
If no revision given, bring working copy up-to-date with HEAD rev. Else synchronize working copy to revision.
Attribute | Description | Required |
file | file to update | No |
dir | directory to update | No |
recurse | Set to "false" to operate on a single directory only
(applies only when dir attribute is set). Default is
"true" |
No |
revision | revision. Defaults is "HEAD" Possible values are : - a date with the format as specified in dateFormatter attribute - a revision number - HEAD, BASE, COMMITED or PREV |
No |
- fileset
Filesets are used to select sets of files to update.
wcVersion
Crawls the working copy and retrieves the maximum revision number, revision range if workingCopy is mixed etc.
Attribute | Description | Required |
path | a path to the working copy | Yes |
prefix | a string which will be prefixed to output properties set/filled by this command | No |
processUnversioned | flag whether presence of unversioned resoures should be treated as changes | No (defaults to false) |
Property name | Description |
repository.url | URL of the repository of the working copy root |
repository.path | path in the repository |
revision.max | the highest revision number in the working copy |
revision.max-with-flags | the highest revision number in the working copy plus flags (M - modified, X - mixed) |
revision.range | the revision range (in mixed wc), similar to svnversion format. (e.g. 1000:1010MX) |
committed.max | the highest 'last committed revision' |
committed.max-with-flags | the highest 'last committed revision' plus flags (M, X) |
modified | set to "true" if working copy is modified, property not set otherwise |
mixed | set to "true" if working copy is mixed, property not set otherwise |
(with prefix="svn.")
svn.repository.url -> https://server/repos/branches/1.2.xExample output in case of mixed and modified working copy: (without prefix set)
svn.repository.path -> /repos/branches/1.2.x
svn.revision.max -> 676
svn.revision.max-with-flags -> 676M
svn.revision.range -> 676M
svn.committed.max -> 651
svn.committed.max-with-flags -> 651M
svn.modified -> true
repository.url -> https://server/repos/branches/1.2.x
repository.path -> /repos/branches/1.2.x
revision.max -> 676
revision.max-with-flags -> 676MX
revision.range -> 673:676M
svn.committed.max -> 651
svn.committed.max-with-flags -> 651M
modified -> true
mixed -> true
Examples
<checkout url="${urlRepos}" destPath="workingcopy" />
</svn>
<delete>
<fileset dir="workingcopy/deleteTest">
<include name="**/*.del"/> </fileset>
</delete>
<commit message="commit deleted files" dir="workingcopy/deleteTest"/>
</svn>
<add dir="workingcopy/propTest"/>
<commit message="propTest added" dir="workingcopy/propTest"/>
<propset path="workingcopy/propTest/file.png" name="svn:mime-type" value="p_w_picpath/png"/>
<propset path="workingcopy/propTest/file.png" name="myPicture" file="workingcopy/propTest/icon.gif"/>
</svn>
subversion command line interface is used (javahl="false").