我想提交大量已修改过的XML文件。但是,在我想要递归搜索的目录中,有许多文件夹/文件已在本地添加,这些我不想提交。
有没有办法在命令行上执行此操作?
更新:我应该包含SVN版本信息:svn,版本1.4.6(r28521),编译于2008年3月11日,08:26:35
P.S。我会对包括如何强制提交的答案感兴趣,例如:即使文件已被锁定。
答案 0 :(得分:4)
您是否尝试在本地文件/文件夹上使用svn:ignore属性?但除非你添加它们,否则它们不会被提交......
通常--force会允许你窃取文件锁。
答案 1 :(得分:3)
您没有指定哪个命令行,因此假设为UNIX或cygwin。
一些选择:
find . -name '*.xml' -print0 | xargs -0 svn ci
svn status | egrep '^M.*\.xml$' | sed -e 's/^. *//' > tmp.txt && svn ci --targets tmp.txt
svn status > tmp.txt && $EDITOR tmp.txt && sed -e 's/^. *//' < tmp.txt > tmp2.txt && svn ci --targets tmp2.txt
注意:我没有测试过命令。
第一个将提交所有XML文件(包括您最近添加的文件 - 如果您尚未添加新的xml文件,则不会出现问题)。
第二个提交所有修改过的xml文件。
第三个允许您在提交之前修改文件列表。只需删除您不想提交的所有行。你可能更自在地完成每个命令,而不是像我一样将它们连在一起(拆分为&amp;&amp;)。
至于锁定,还有另一条评论似乎涵盖了大部分内容。
答案 2 :(得分:2)
编辑:我根据您在问题中更新的一些信息重写了这个答案。
首先,要强制解锁文件,仅仅 - 强制提交是不够的。您可以在解锁命令中使用--force,并且必须在要解锁的确切URL上使用它。不幸的是,除非您有权访问存储库,否则这是唯一的方法。如果可以直接访问存储库,则可以使用此处显示的svnadmin命令:
svnadmin lslocks /path/to/repository
这将显示锁定的文件。解锁:
svnadmin rmlocks /path/to/repository /project/path/to/locked/file
如果您无法直接访问存储库,则可以一次删除一个锁:
svn --force unlock svn://url.to.repository/project/path/to/locked/file
准备好登记后,您可以直接列出要签入的文件,而不仅仅是执行默认目录。这将允许您仅检入修改后的XML文件,同时忽略目录结构更改,添加或其他您不想签入的其他内容(添加解锁示例):
svn --force unlock svn;//url.to.repository/project/janes_subdir/jane.xml
svn ci -m "Whatever Log" foo.xml junk.xml my_subdir/*.xml janes_subdir/jane.xml