2010-01-13 149 views
1
$svn diff > patchfile 

創建一個很好的補丁文件。然而,在Windows下使用TortoiseSVN我已經將一些文件設置爲「忽略提交」,也就是說,它在版本控制下,但沒有被選中,當我做一個提交。從svn中排除TortoiseSVN的忽略提交文件比較

TortoiseSVN似乎通過.svn/entries中的自定義條目處理此文件。請注意,它不是一個普通的SVN屬性(也就是說,不能通過svn propget獲取)。

我的問題是,我要創建通過命令行一個補丁文件(通過Cygwin的bash和SVN港),但這個補丁文件應該包括與這種「忽略上提交」標誌的文件。

有沒有人有一個想法如何做到這一點(除了步行與awk遞歸通過每個.svn/entries ...)?

回答

2

顯然這是一個特殊的changelist entry。至於如何忽略命令行中的文件,它看起來並不像particularly easy way

+1

感謝您的回答!一個簡單的方法是用'svn status --changelist ignore-on-commit working-copy'來列出所有具有某個更改列表條目的文件,這可以完成(我現在學到了什麼)。這應該夠了吧。 – Boldewyn 2010-01-13 13:24:47

1

您可以通過文件上的'svn info'查看更改列表。並通過

$ svn help cl 
changelist (cl): Associate (or dissociate) changelist CLNAME with the named files. 
usage: 1. changelist CLNAME TARGET... 
     2. changelist --remove TARGET... 

Valid options: 
    -q [--quiet]    : print nothing, or only summary information 
    -R [--recursive]   : descend recursively, same as --depth=infinity 
    --depth ARG    : limit operation by depth ARG ('empty', 'files', 
          'immediates', or 'infinity') 
    --remove     : remove changelist association 
    --targets ARG   : pass contents of file ARG as additional args 
    --changelist ARG   : operate only on members of changelist ARG 
          [aliases: --cl] 
+0

但是,我將不得不遞歸grep所有文件,並調用每個文件'svn info'。我認爲,解析'svn st --changelist ignore-on-commit'的輸出會更容易。 – Boldewyn 2010-01-13 20:09:55

+0

你也可以在'svn info'上使用--depth infinity來顯示所有項目。如果文件被修改,那應該會快很多。 (狀態比較,信息只顯示元數據) – 2010-01-14 13:05:55

1

我有這個問題太,從而開發出一個簡單的命令鏈,服務器需要使用「svn修改列表」設置/復位修改列表:

SVN ST | grep -A 1000'ignore-on-commit'| grep -v'ignore-on-commit'| sed's /^.* // g'| xargs svn diff | GVIM -

(假設有少於1000個文件以外的變更表改性「忽略上提交」)

使用該命令,修改外變更表文件「忽略上提交」將DIFF-ED, 'ignore-on-commit'內沒有文件修改。