2010-09-22 47 views
68

我的機器上有一個存儲庫的工作副本,我知道它已在服務器上更新。我想知道如何通過使用svn命令行參數來獲得新版本和我的工作副本中版本的區別。檢查服務器上的文件差異

有沒有辦法讓我這樣做?

+0

另請參閱http://superuser.com/questions/150213/subversion-how-to-compare-differences-between-incoming-changes – craq 2015-04-28 10:30:47

回答

104

工作副本是修訂版BASE。來自存儲庫的最新副本是修訂版HEAD。這將會對HEAD修訂版本比較你的工作副本:

svn diff -r HEAD <file> 

其實是會吐的變化進行反向的,即它會告訴你如何去從頭部到基地。所以在技術上你想:

svn diff -r BASE:HEAD <file> 

你可以不用鍵盤筆畫?只有你和你的神明知道答案。

+1

+1 for wit。選擇正確性 – 2010-09-22 20:45:10

+9

工作副本文件可能與基本不同(當您對文件進行本地修改時)。你應該認識到它不區分服務器本地修改文件。 – 2010-09-22 21:19:54

+0

稍後的回答解決了將局部修改區分爲HEAD的原始問題 – Chadwick 2012-06-28 02:08:28

15

工作副本HEAD之間的區別;這將需要什麼現在是在存儲庫(HEAD)來進行的更改,以產生你工作副本

svn diff -r HEAD --old=<file> 

可能感興趣的,BASEHEAD之間的區別;從你上次更新工作副本已簽入到存儲庫的變化:

svn diff -r BASE:HEAD <file> 

當然BASE工作副本之間的差異;因爲你所做的更改最後更新工作副本

svn diff <file> 


有正在討論三個版本:BASE工作副本HEAD

  • BASE<file>上次檢出/更新。什麼工作副本將恢復使用svn revert
  • 工作副本後:局部修改<file>已簽出/更新,最近在BASE
  • HEAD:在庫中最新的修改。相當於BASEiff自從<file>被檢出/更新爲工作副本以來沒有發生變化。