SVN ANT命令

简介:
from:http://loverjava.iteye.com/blog/1042438

==============正文=====================

<Svn>

By  Cédric Chabanois et al.

Description

This task provides an interface to  Subversion revision control system that is a compelling replacement for CVS in the open source community. 
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

As with most Ant extensions, SvnAnt's task and type names must be  mapped to their implementing classes before being used in an Ant build file. An example of how to use the  antlib bundled in SvnAnt's JAR file to perform that registration follows:
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpath="svnant.jar" />

Parameters

Attribute Description Required
username 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")

add

You can add files and directories to svn repository with nested  <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
Parameters specified as nested elements :
  • 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

Get the content of a file on repository.
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

Check out a working copy from a repository.
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

Send changes from your working copy to the repository.
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
Parameters specified as nested elements :
  • fileset
    Filesets are used to select sets of files to commit.
 

copy

Duplicate something in working copy or repository, remembering history.
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

Create a new, empty repository at path.
Attribute Description Required
path Path where to create the new repository Yes
Example: 
<svn javahl="false">
<createRepository
 path="repository"/>
</svn>

delete

If run on a working copy target, the item is scheduled for deletion upon the next commit. Files, and directories that have not been committed, are immediately removed from the working copy. 
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
Parameters specified as nested elements :
  • fileset
    Filesets are used to select sets of files to delete..
 

diff

Display the differences between two paths (oldPath and newPath) or two urls (oldUrl and newUrl).
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
Example : diff between BASE and current working version 
<svn javahl="${javahl}">  <diff oldPath="workingcopy/diffTest/file.txt" outFile="workingcopy/diffTest/patch.txt"/>  </svn>

export

 
  1. Exports a clean directory tree from the repository specified by srcurl, at revision revision if it is given, otherwise at HEAD, into destPath.
  2. Exports a clean directory tree from the working copy specified by srcPath into destPath. 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

Add a given file or a pattern to the ignored files list (modifies svn:ignore property)
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
Example :
<ignore dir="workingcopy/ignoreTest/dir1" pattern="*.ignore" recurse="true"/>

import

Commit an unversioned file or tree into the repository.
Recursively commit a copy of  path to  url.
If  newEntry is not set, copy top-level contents of  pathinto urldirectly. 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

Gets the information from the repository for a file, directory or url and sets the values to ant properties.
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
 
The task sets the following properties (prefix applied accordingly):
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

Keywordsset controls which keywords will be substituted on the given files. 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
 

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
Parameters specified as nested elements :
  • fileset
    Filesets are used to select sets of files on which to apply keywords substitution.
 

keywordsadd

Keywordsadd add some keywords to be substituted on the given files. Present keywords are not modified.
The attributes are the same than for keywordsset command.

keywordsremove

Keywordsadd remove some keywords to be substituted on the given files. Other present keywords are not modified.
The attributes are the same than for keywordsset command.

mkdir

Create a new directory under revision control.
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

Move/rename something in working copy or repository.

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

Remove a property from files or dirs.
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

Get a property from a file or a directory.
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
Example :
<propget path="workingcopy/propTest/file.png" name="svn:mime-type" property="propTest.mimeType"/>

propset

Set a property on files or dirs.
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
Note:svn recognizes the following special versioned properties but will store any arbitrary properties set:
  • 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

Restore pristine working copy file (undo most local edits).
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
Parameters specified as nested elements :
  • fileset
    Filesets are used to select sets of files to revert.
 

status

Get the status of working copy files and directories.
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
The value of TextStatusProperty can be :
  • 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
The value of propStatusProperty can be :
  • normal : no modifications
  • conflicted
  • modified
 
 
Example : 
<status path="workingcopy/statusTest/added.txt"  textStatusProperty="testStatus.textStatus"  propStatusProperty="testStatus.propStatus"  lastChangedRevisionProperty="testStatus.lastCommitRevision"  revisionProperty="testStatus.revision"  lastCommitAuthorProperty="testStatus.lastCommitAuthor"

switch

Update the working copy to mirror a new URL within the repository. This behaviour is similar to 'svn update', and is the way to move a working copy to a branch or tag within the same repository.
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
Example:  <svn>  <switch path="workingcopy/switchTest" url="${urlRepos}/switchTestBranch"/>  </svn>

update

Bring changes from the repository into the working copy.
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
Parameters specified as nested elements :
  • fileset
    Filesets are used to select sets of files to update.

wcVersion

Retrieves a state of the working copy. Similar to the svn's utility svnversion, just providing more.
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)
The command fill set the following properties: (with optional prefix applied)
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
An example of the properties that would be set in a sample working copy (with modifications):
(with prefix="svn.")
svn.repository.url -> https://server/repos/branches/1.2.x
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
Example output in case of mixed and modified working copy: (without prefix set)
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
 

cleanup

cleanup your working copy
Attribute Description Required
dir directory to cleanup Yes
 

Examples

 
<svn javahl="${javahl}">
<checkout url="${urlRepos}" destPath="workingcopy" />
</svn>
checkouts a working copy from repository
 
 
 
<svn>
<delete>
<fileset dir="workingcopy/deleteTest">
<include name="**/*.del"/>  </fileset>
</delete>
<commit message="commit deleted files" dir="workingcopy/deleteTest"/>
</svn>
deletes some files from repository (and commit changes)
 
 
<svn>
<add dir="workingcopy/propTest"/>
<commit message="propTest added" dir="workingcopy/propTest"/>
<propset path="workingcopy/propTest/file.png" name="svn:mime-type" value="image/png"/>
<propset path="workingcopy/propTest/file.png" name="myPicture" file="workingcopy/propTest/icon.gif"/>
</svn>
add my_repos/propTest to repository and set two properties on file.png 
subversion command line interface is used (javahl="false").
相关文章
|
4月前
|
存储 算法 开发工具
git是什么?git的五个命令,git和svn的区别
git是什么?git的五个命令,git和svn的区别
46 0
|
9月前
|
数据安全/隐私保护
svn命令的使用
svn命令的使用
47 0
|
5月前
|
Java Linux PHP
svn在linux下的使用(svn命令)
svn在linux下的使用(svn命令)
59 0
|
10月前
|
Linux 数据安全/隐私保护 iOS开发
Linux下SVN 命令每次都要输入密码
Linux下SVN 命令每次都要输入密码
|
存储 NoSQL 开发工具
为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)
最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就只会用个SVN。殊不知,当今各大互联网巨头和新兴起的互联网黑马公司,基本都是用的Git,而基本废弃了对SVN的使用。为什么呢?我们一起往下看。
204 0
为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)
|
Linux 调度 数据安全/隐私保护