我想提交大量已被修改的XML文件。但是,在我想要遞歸搜索的目錄中,有許多文件夾/文件已添加到本地,這些我不想提交。Subversion:只提交修改過的文件
有沒有辦法在命令行上做到這一點?
更新:我應該已經包括了SVN版本信息:SVN版本1.4.6(r28521),編制2008年3月11日,8點26分35秒
附:我對包括如何強制執行的答案感興趣,例如即使文件已被鎖定。
我想提交大量已被修改的XML文件。但是,在我想要遞歸搜索的目錄中,有許多文件夾/文件已添加到本地,這些我不想提交。Subversion:只提交修改過的文件
有沒有辦法在命令行上做到這一點?
更新:我應該已經包括了SVN版本信息:SVN版本1.4.6(r28521),編制2008年3月11日,8點26分35秒
附:我對包括如何強制執行的答案感興趣,例如即使文件已被鎖定。
你有沒有試過在本地文件/文件夾上使用svn:ignore屬性?但除非你svn添加他們,他們不會承諾...
通常 - 強制將允許你偷文件鎖定。
--force給了我一個錯誤,表示它無法識別svn commit命令。 'svn help commit'只提到了一個強制日誌選項,我認爲這不是我想要的。 – Grundlefleck 2008-11-13 20:29:36
另請參閱http://stackoverflow.com/a/10226942/892318作爲替代方法 – domi27 2014-04-17 10:36:08
編輯:我正在根據您在問題中更新的一些信息重寫此答案。
首先,要強制解鎖文件,僅僅強制執行提交是不夠的。您可以使用--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
我通常不會,但持有人已經打包回家過夜。 :-) – Grundlefleck 2008-11-13 20:28:24
你沒」 t指定哪個命令行,因此假定使用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文件。
第三個將允許您在提交之前修改文件列表。只需刪除所有不想提交的行。你可能更習慣於單獨執行每條命令,而不是象我一樣將它們鏈接在一起(分割爲& &)。
至於鎖定還有另一個評論,似乎覆蓋了大部分。
我根據對問題的更改更新了我的答案。我希望它現在更有幫助,但如果這是經常發生的事情,我會建議將(至少客戶端)升級到1.5,以便您可以使用變更集:) – 2008-11-13 21:20:50