我正在编写一些脚本,用更新版本的xml文件更新Linux机器的SVN仓库.回购巨大,并且在同一个盒子上没有结帐版本.我们的想法是在没有工作副本的情况下更新xml.这是可能的还是我需要签到临时文件夹,复制/覆盖,签入和删除临时文件夹?
编辑:非常感谢您到目前为止的答案.
我知道你可以用API和代码来做,不确定是否有任何SVN命令这样做......
非常感谢.
Dav*_* W. 28
问题是你不想打算结账,或者因为你担心如果你结账,你将需要结账很多文件?
你必须在Subversion中结帐.如果没有工作副本,您不能简单地提交更改.(并非完全如此,你可以做svn delete
,并svn mkdir
没有结帐.)
但是,您可以限制使用--depth
交换机检出的文件数量.例如,您可以执行以下操作:
$ svn co --depth=empty http://myserver/myrepos/mydirectory
Run Code Online (Sandbox Code Playgroud)
这将检出目录,但不包含任何文件.然后,您可以svn update
只执行要修改的文件,然后提交这些更改:
$ cd mydirectory #Enter the empty working copy just checked out
$ svn update fileToChange #Adds file you want to change to your working dir
$ edit fileToChange.xml
$ svn commit -m "Modified 'fileToChange.xml' with latest version"
Run Code Online (Sandbox Code Playgroud)
这将允许您更改文件fileToChange.xml而无需签出整个目录.
有一种方法可以在没有工作目录的情况下"更新"文件,但这取决于你想要做什么.在很多情况下,我会像这样做一些自动检查,我发现这个解决方案足够好了:
您可以使用svn import
更新文件
就像是:
svn import -m "updating the xml" local.xml http://server/path/to/repo/server.xml
Run Code Online (Sandbox Code Playgroud)
Catch是您无法导入已存在的文件,因此您必须发出删除然后导入:
svn delete -m "deleting for update" http://server/path/to/repo/server.xml
Run Code Online (Sandbox Code Playgroud)
您丢失了历史记录,但它是一种非常简单且轻量级的更新文件方式,完全取决于您正在执行的操作.如果您对删除和丢失历史记录感到不舒服,则必须使用其他答案建议的方法.
归档时间: |
|
查看次数: |
16196 次 |
最近记录: |