我們的團隊使用svn來管理我們的來源。在C文件上執行重新計算時,我偶爾會更改函數並在文件中移動它們。通常我會盡量避免移動函數,因爲它會使默認的svn diff對於正在發生的事情稍微有些誤解,並且它通常會提供一個比它所需要的更加混亂的diff。如何獲得基於c函數的差異?
無論如何,我偶爾會進行功能文件位置更改和功能內部代碼更改。另一個出現的地方是分支合併,當文件發生衝突時,其中一個或兩個分支都有移動以及功能內變化。
所以,我在尋找的是一個語義意識的差異工具,可以告訴我差異在兩個層次 - 函數排列和細節(函數內)。我嘗試使用「-p」選項來區分(-x -p到svn diff),但這不是它的目的,它確實沒有做我想要的。
我剛纔想到的另一個選擇是使用diff程序來捕捉代碼複製,比如大學可能會用來檢查分配,但沒有什麼明顯的出現在快速搜索中。
我不知道一個diff工具可以做你想做的。我似乎記得CodeWarrior內置的一個捕捉移動代碼。 (我認爲它抓住了多行被移動,而不是功能,但這幾乎一樣好)。但是CW已經死了。無論如何,如果沒有人提出解決方案(並且「使用git代替」本來就是我的神經),如果你自己找到了一些東西,我會非常感興趣。 – sbi 2009-09-23 08:22:21