2017-08-17 45 views
1

我需要替換perforce庫中的庫。該庫以源文件的形式簽入,這些文件全部由perforce管理。perforce替換庫

現在的問題是,在庫的新版本可能會有

  • 文件不變
  • 更改的文件
  • 新文件和
  • 某些文件可能已被刪除

當然,我可以標記整個源代碼樹進行刪除,提交,將新版本的庫複製到直接ory問題,標記爲添加並再次提交,但這會創建一個很短的時間間隔,在這段時間內沒有人應該同步,以便不打破他的下一個構建 - 也許這是最好的選擇,但我想知道是否存在是一個更好的方法。

第二種解決方案是將庫的新版本複製到其他目錄,更新所有引用以反映新位置,然後刪除舊庫並標記新庫以添加。這可以在一個更改列表中完成。這裏不愉快和容易出錯的部分是更新引用。目錄名稱中的更改也不是真正需要的。

有沒有人知道一種方法來做到這一步一個更改列表?我嘗試了一個單獨的文件示例。它實際上可能標記文件進行刪除,然後立即創建一個具有相同名稱的文件並標記爲添加。如果你這樣做並提交,那麼結果就是我想要的單個文件。但是,此過程似乎需要手動觸摸每個文件。我無法弄清楚如何爲整個目錄或目錄樹做到這一點。

回答

2

一種可能性是使用p4 reconcile做的大部分工作,使用這樣一個過程:

  1. 在您的工作空間,完全刪除源代碼樹的最新副本:如果你rm -rf top-directory-name(或del /s /q '在Windows上)。
  2. 將庫的源樹的整個新副本複製到該位置。
  3. 運行p4 reconcile並讓它找出要添加,編輯和刪除的文件。 仔細通過密切關注p4 opened,p4 diff等檢查結果
  4. 提交新的更改列表。
+0

謝謝。明天我會試試這個。有沒有這樣做的螺旋方式? – Thomas

+1

如果您的意思是P4V(Helix只是Perforce的另一個名稱),與「reconcile」等效的是「File> Reconcile」。您仍然需要將新文件複製到工作區中。事先*不*先做「從客戶端刪除」/「同步#無」; reconcile命令將計算您之前同步的內容與工作區中現在的內容之間的差異,因此您希望同步狀態(「有表」)反映您正在修改的內容而不是空的工作區。 –