2009-01-20 75 views
3

許多編輯人員會注意到文件從其下面更換時的情況。如果您在文件中有未保存的編輯,是否有任何編輯可以提供讓您進行三向合併?在文件更改時的編輯緩衝區合併

這種情況的常見情況是我忘了在SVN更新之前就保存一個文件,當我切換回我的編輯器時意識到我現在可以選擇踩踏剛剛做的更新,放棄我的更改,或者做複製/粘貼/外部diff工具歌曲和舞蹈。

是的我知道正確的解決方案是ctrl + s在我更新之前,但我是人類,想要一個非常簡單的解決方案來解決問題後我把它解決了。

回答

2

EditPad Pro,當它檢測到您打開的未保存更改的文件在磁盤上已更改時,會詢問您是否要從磁盤重新加載文件,忽略磁盤上的更改或查看文件之間的區別磁盤和未打開更改的版本。

這是一個雙向差異,而不是您詢問的三向差異。我不知道任何文本編輯器會提供做三方差異。如果磁盤上的文件被破壞,文本編輯器將不再有原始文件的副本。這將是版本控制要解決的問題。

預防措施可能是讓您的編輯器鎖定已打開的文件。然後,SVN更新將在您編輯器中打開的任何文件上失敗。在EditPad Pro中,在選項,首選項,文件中有一個選項。

0

這似乎是源代碼管理的問題,而不是編輯器。

當然Emacs可以編程來做到這一點,但默認情況下,它似乎只是問你是否想保存在改變的文件或不。嘗試編輯已更改的文件會讓您選擇將緩衝區還原爲文件內容。

Vi(至少是我使用的版本)甚至不檢查文件是否已更改。 (也不檢查,如果該文件是隻讀的之前,我對它進行編輯,這驅使我堅果也許我需要找到一個更好的VI。)

1

用vim就可以進入使用的比較模式:DiffOrig
對修改的檢查可以用強制:checkt

要自動完成它,你可以把下面給你的.vimrc:

au FileChangedShell * DiffOrig 
然後

Vim會盡快進入DIFF分裂因爲它意識到文件(mtime)已更改。

1

聽起來像一個不好的方法來解決你的腳下修改文件的問題。正如我平時迴應:你有什麼問題真的試圖解決?

+0

好(後續)問題。我想知道真正的答案是使用某種源代碼控制嗎? – 2009-01-20 19:58:38

+0

問題與我剛纔提出的一樣,OTOH只是在「糟糕」和「現在是什麼?」之間出現的。 – BCS 2009-01-20 20:19:32

+0

這個問題在我的回答後被編輯... – JesperE 2009-01-20 20:23:16

1

我很少遇到這種情況,可能是因爲我一旦手指沒有做任何事情就立即保存,而沒有真正去想它。

否則,我建議你找到一個集成到你的編輯器中的SVN客戶端。大多數這樣的客戶端會在提交或更新之前自動(或要求)保存。

1

所以你有一個文件未保存的變化,然後你做該文件的SVN更新,對不對?

在這種情況下,您應該保存更新後的更改並再次運行SVN更新。 SVN更新的第二次運行將嘗試合併來自存儲庫的更改,並告訴您是否存在衝突。

更多/最重要的更改是編輯器中未保存的更改,SVN更新的更改始終可以從存儲庫中再次取出。

相關問題