2014-12-04 25 views
1

我正在檢查在運行p4 -G opened(或者如果我使用P4Python API和p4.run_opened)時返回的Python字典。結果包含指示每個文件的修訂號的haveRevrev條目。有什麼不同? (我似乎無法找到具體說明p4.run_opened P4Python API文檔)。rev和haveRev與`p4 opened`有什麼區別?

我認爲,或許他們會有所不同,如果我編輯的文件,同步到以後的版本,而忽略了運行p4 resolve,但兩者haveRevrev在這種情況下似乎仍然是相同的。

回答

5

他們幾乎總是一樣的。它們僅在您明確同步到您當前正在「正在處理」的版本以外的版本的情況下才會有所不同。這是如此,如果你恢復,你的工作空間將與你明確同步到的內容一致。

例子:

C:\test\999\depot\sam\i\rc\a>p4 edit foo 
//depot/sam/i/rc/a/foo#2 - opened for edit 

C:\test\999\depot\sam\i\rc\a>p4 -Ztag opened | grep -i rev 
... rev 2 
... haveRev 2 

C:\test\999\depot\sam\i\rc\a>p4 have foo 
//depot/sam/i/rc/a/foo#2 - c:\test\999\depot\sam\i\rc\a\foo 

C:\test\999\depot\sam\i\rc\a>p4 sync foo#1 
//depot/sam/i/rc/a/foo#2 - is opened at a later revision - not changed 

C:\test\999\depot\sam\i\rc\a>p4 -Ztag opened | grep -i rev 
... rev 2 
... haveRev 1 

C:\test\999\depot\sam\i\rc\a>p4 have foo 
//depot/sam/i/rc/a/foo#1 - c:\test\999\depot\sam\i\rc\a\foo 

C:\test\999\depot\sam\i\rc\a>p4 revert foo 
//depot/sam/i/rc/a/foo#1 - was edit, reverted 

,他們是(從您打開該文件後,明確地同步開)是,如果你以這樣的方式,該文件是隱式同步打開的文件不同的另一種情況,例如與集成(默認情況下默認同步頭,以便您不必做兩個解決)。該文件將在這種情況下在頭部打開,但是恢復會使您恢復到在打開文件之前的狀態,而不是將您同步到打開並恢復(可能意外和不需要的)副作用文件。

+0

啊,同步到一個*更早*版本。這是否意味着'rev> = headRev'總是正確的? – jamesdlin 2014-12-05 10:00:44

+0

我這麼認爲 - 至少我想不出有什麼辦法可以打開一個比你有的版本更早的版本。向前同步將增加兩者(並且在工作轉「rev」向前移動時安排解決方案),並且同步返回將重置haveRev,否則將不會執行任何操作。 – 2014-12-05 19:47:28