2010-03-04 110 views
4

我目前使用SVN來版本化我的軟件項目。在一個正在進行的項目中,我爲客戶的常用功能和規格以及分支機構提供了客戶端專用的主幹。忽略合併時的文件/文件夾

有沒有辦法標記一些文件/文件夾,每次我執行這樣的操作時都不應該合併到分支中?

+0

可能的[如何在Subversion合併期間忽略文件夾]的副本(http://stackoverflow.com/questions/1559552 /如何到忽略文件夾,在顛覆合併) – 2015-03-02 14:48:55

回答

2

有一個選項可以合併,這意味着合併不會更改目標中的文件,而是將其標記在合併跟蹤道具中。這樣,所做的更改永遠不會在要合併的文件中出現。

該功能在命令行版本中被稱爲僅記錄。

link text

的--record只選項與-r,準確地做什麼你認爲它的作用:它標誌着一個修訂的合併(或卸載了,如果使用的是「 - 」版本號否定語法),而不需要實際改變mergeinfo以外的任何東西。例如,當某人手動編輯文件以便有效合併已經在其他地方進行的更改時,這將非常有用。在下一次同步合併中,不必將原始更改移植到合適的位置,從而避免文本衝突,只要兩個版本的細微差別不同,就可以將更改記錄爲已合併。 (有關更多詳細信息,請參閱合併跟蹤要求以及Subversion書中的阻止更改。)

2

我沒有立即看到解決方案,但很容易編寫腳本。我給你的東西沒有經過測試。

首先,您將製作一個您想要刪除的目錄列表。所謂的〜/ .svn文件合併,排除

#regexes to exclude 
./helpfiles/ 
./deploy_scripts/ 
./models/customer_integration 

然後你會寫另一個腳本恢復這些目錄分支在合併turnk放進去後。

#/usr/bin/bash 
# I am assuming that you made the excludes based on the root directory 
# so that relative paths will work 
for dir in $(cat ~/.svn-merge-excludes) ; do 
    svn revert -R $dir 
done 

這應該工作。這裏最重要的是恢復在目錄上遞歸執行的'-R'選項。因此你的工作流程看起來像這樣。

# cd path/to/branch 
# svn merge -r123:245 svn://svnserver.com/svn/trunk 
# revert_excludes_from_branch.sh 

然後,你會處理衝突,然後提交。如果您使用的是Windows,那麼批處理文件也可以工作,您可以直接輸入revert命令。