2012/11/30

[WorkLog] Ignore svn committed files and synchronize it : 把已經被 Commit 到 SVN 上的檔案設定為忽略並同步大家的狀態

Combo2
當兩人以上要協同開發一支程式,就會開始遇到一個人開發時不會遇到的但又有點擾人的麻煩,今天我就遇到其中一種。當我改完一兩個小檔案後,想要 commit 到 Subversion 時,看到了密密麻麻的已修改檔案,像這樣,(因應個資法,遮一下 XD)
猜猜我改了哪幾個?其實都不在這邊,要再往下翻 T_T

不過,我今天改了什麼不是本篇的重點,重點是有沒有辦法可以讓它不要列出這麼多不需要 commit 的東西嗎?當然有阿,只要負責人一開始就把 bin, obj, *.suo, *.user ... 等資料夾和檔案設定 ignore 後 commit 到 Subversion,或乾脆每個人在自己的小烏龜設定相同規則的 Global ignore pattern ,只要這些檔案從來沒有 commit 上去,Global ignore pattern 就還有效果。

但是,這個專案本來是預定給一個人用的,也剛好沒去用 Global ignore pattern ,所以問題變得有點麻煩,多麻煩?我試給你看~

(本節目由,TortoiseSVN 1.7,[半秒鐘],Subversion 1.7,[半秒鐘],贊助播出。)

話說,細雨綿綿的十一月天,阿A和阿B一大早四腳濕答答的進辦公室開始開發下個月要交付的產品,兩個人臉色都不太好看。

10:10,阿A update 後看到了某個工具程式的 bin, .suo 等東西被標成了勾勾,想說"這東西幹嘛要 commit ?之後 VS 建置完不就要被列出來了,萬一再被 commit 上去,不就一天到晚都要看這些檔案發生衝突 ... 忽略它們吧。"
原樣

嘿!

哈!

丫阿!

用 commit 試一下。嗯~乾淨多了^___^

10:20,另一方面,阿B正好在改同一支工具程式,沒花多少時間,改完測完後當然是 commit 啦。
原樣
bin 原樣
commit everything~~
蛤~?這啥小?
update 試一下,靠悲!什麼狀況!?
還好前輩有教過,發動大絕招:Resolve 吧!

嗯嗯
再一次,commit everything~~
行了唄。喝咖啡去。

11:00,阿A也把剛剛改好的工具程式功能測完了,聽說阿B剛剛有改點東西,先 update 一下好了。
哦~阿B改不少嘛。靠腰!那些不是被我忽略掉了嗎?怎麼又回來了?

怎麼又回來了!!

阿~~~~~~~阿B~
然後,阿A說阿B嘸 sense,阿B怪阿A沒事在找他麻煩,樑子就這麼結下來了。

是的!事情怎麼會這麼發展呢?難道沒有解決的方法嗎?究~竟!是哪個環節出了問題?我們明天繼續看下去。

其實,要把已經 commit 的檔案從伺服器上刪掉並設定為 ignore 這件事應該要更慎重的看待。再怎麼說,Subversion 這類的版本控管系統也只是輔助的工具,人與人之間的溝通還是必要的,因此阿A在開始要做這件事前,應該要找阿B來一起處理,最少也要通知一下(看看上面阿B遇到的情況,還蠻嚇人的)。

好,我們重新來順一下狀況。
十分鐘前,阿A約了阿B要來砍一些應該要忽略的檔案。
阿A將 bin obj 資料夾和一些 .suo .user 設定為刪除和 ignore 並 commit 到 Subversion。
阿B接著把自己電腦中的同一資料夾 update,並且如預期般的出現 Tree conflict,冷靜的使用 Resolve 排除了 Tree conflict,然後準備 commit (金!就是這邊!在第二次 commit everything 的時候,有一點不一樣囉!)

B一看,應該被忽略的 bin 和 .user 狀態變成了 added,所以把它們挑出來右鍵執行了 Undo Add(*如果 bin 裡面有重要檔案,請先自行備份!)
Undo Add 之後,bin 和 .user 也就不會再出現啦,因為它們已經在忽略名單中了

在 Undo Add 時,磁碟中的檔案似乎也被刪除了。(這我倒是蠻意外的)

把檔案 co 回來再用 commit 測試。嗯,真的有忽略。

就這麼的,阿A與阿B各自電腦中同一個程式資料夾的檔案狀態又相同了,而且不需 commit 的檔案也順利的放到了忽略名單中。下次有新人加入時,check out 同一個程式也會套用相同的忽略名單,在準備 commit 時也就不需要在一堆密密麻麻的藍字清單中找尋自己剛修改的檔案了。^___^

沒有留言:

張貼留言