2012-02-13 88 views
4

我不知道,如果我在這裏觸摸敏感的話題,至少它似乎並不容易......如何在版本控制系統中找到某些更改?

有許多VCS在那裏,還有更多的文章/博客/ ...描述如何他們是高效的。還有很多建議,當不需要的時候從代碼中移除東西(乾淨的代碼)。總是有句話,如「它不會丟失反正」,「你總是可以回到它」,...

我不能完全遵循這一點。比方說,有一些開發人員正在開發一個特定的項目。新的要求出現在現場,導致創建,修改和刪除代碼。並希望重構。

實際上,偶爾會發生某些功能需要,然後丟棄然後重新添加。換句話說,已經有代碼了。該代碼在「需要」階段寫入並在「不再」階段被刪除。在「重新加入」階段會發生什麼?有些人可能會建議重寫代碼,但我不認爲這是一個選項。實際上,「舊」代碼可能包含針對當時出現的問題的修復。

該項目不小,許多課程,大量的邏輯,也許一些人事變動,你明白了。恕我直言,總是期望至少有一位開發人員記得有代碼編寫以及發生了什麼(包括分支名稱)是不公平的。

是否有從VCS的任何支持回答這樣

  • 問題,如果是一個尚未刪除的特定方法,我只是有關於它的名字一個模糊的猜測?
  • 我很確定這裏有一條if語句,但發生了什麼事?
  • ...

我不想對這個問題限制到一個VCS。它應該更多地是一個普遍的問題。如果任何人關心,我們目前使用Mercurial。

回答

0

這是最好的處理的那種情景:

  • 許多功能分支
  • 一個整合分支,它要合併(或reverting如果你不想再一個功能合併做)所有功能,應該爲下一個版本,以執行集成測試。

(如「What is a useful Branch Versioning Strategy?」中所述)

這是更容易DVCS(水銀,GIT)做的,因爲你可以很容易地合併/變基/櫻桃挑選一組從一個分支犯到另一個,也是canceling commits you don't want to see


現在關於「找東西」:

由於在DVCS版本往往比在CVCS小,你結束了自己的孤立的「小東西」承諾,你可以得到稍後回來看看它們是否被合併。

什麼也是一個DVCS更容易爲:

+0

謝謝,但那不能回答我的問題。我在增長的代碼庫中詢問_finding_的東西。很多代碼都被分配到各個分支中,被合併或不合並,所以很有可能失去範圍之外的小事情。 – sjngm 2012-02-14 06:39:23

+0

@sjngm:好的,我編輯了答案並添加了一個與您的問題 – VonC 2012-02-14 06:50:47

+1

更相關的部分。 'git log --oneline -S' [你提到](http://stackoverflow.com/a/7909283/483113)似乎做了我正在尋找的東西。 [docs](http://linux.die.net/man/1/git-log)表示'-S'還列出字符串消失的結果。整潔的功能。 – sjngm 2012-02-14 07:23:45