2008-11-13 69 views
2

我想提交大量已被修改的XML文件。但是,在我想要遞歸搜索的目錄中,有許多文件夾/文件已添加到本地,這些我不想提交。Subversion:只提交修改過的文件

有沒有辦法在命令行上做到這一點?

更新:我應該已經包括了SVN版本信息:SVN版本1.4.6(r28521),編制2008年3月11日,8點26分35秒

附:我對包括如何強制執行的答案感興趣,例如即使文件已被鎖定。

+0

我根據對問題的更改更新了我的答案。我希望它現在更有幫助,但如果這是經常發生的事情,我會建議將(至少客戶端)升級到1.5,以便您可以使用變更集:) – 2008-11-13 21:20:50

回答

4

你有沒有試過在本地文件/文件夾上使用svn:ignore屬性?但除非你svn添加他們,他們不會承諾...

通常 - 強制將允許你偷文件鎖定。

+0

--force給了我一個錯誤,表示它無法識別svn commit命令。 'svn help commit'只提到了一個強制日誌選項,我認爲這不是我想要的。 – Grundlefleck 2008-11-13 20:29:36

+0

另請參閱http://stackoverflow.com/a/10226942/892318作爲替代方法 – domi27 2014-04-17 10:36:08

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 
+0

我通常不會,但持有人已經打包回家過夜。 :-) – Grundlefleck 2008-11-13 20:28:24

3

你沒」 t指定哪個命令行,因此假定使用UNIX或cygwin。

有幾個選項:

  1. find . -name '*.xml' -print0 | xargs -0 svn ci
  2. svn status | egrep '^M.*\.xml$' | sed -e 's/^. *//' > tmp.txt && svn ci --targets tmp.txt
  3. svn status > tmp.txt && $EDITOR tmp.txt && sed -e 's/^. *//' < tmp.txt > tmp2.txt && svn ci --targets tmp2.txt

注:我沒有測試過的命令。

第一個將提交所有XML文件(包括最近添加的那些文件 - 如果沒有添加新的xml文件,則不是問題)。

第二個提交所有修改的XML文件。

第三個將允許您在提交之前修改文件列表。只需刪除所有不想提交的行。你可能更習慣於單獨執行每條命令,而不是象我一樣將它們鏈接在一起(分割爲& &)。

至於鎖定還有另一個評論,似乎覆蓋了大部分。

相關問題