2012-02-07 65 views
4

我有麻煩從perforce服務器獲取最新版本。車庫非常大,我不想做一個完整的結賬,因爲它會很長一段時間。相反,我將未版本化的源代碼和依賴項放在工作區中,並執行「p4 sync -k」。這成功地版本我的文件,但它不會從服務器帶來新的文件。高效地同步大型Perforce存儲庫?

我該怎麼做?

+0

您將不得不提供更多信息。關於Perforce總共有630個其他問題。這意味着有數百萬個問題,只有630個人問過關於Perforce的問題。你將不得不提供更多信息。當你說車廠大,有多大,我們談論的,我的猜測整個問題是使用未版本控制的事實。 – 2012-02-07 15:28:33

+0

試試'p4 sync'?-k選項不應該從服務器提取文件。 'p4 help sync'是你的朋友。 – IanGilham 2012-02-07 15:29:55

+0

@Ramhound。該倉庫足夠大,需要超過10個小時才能獲得完整的來源和依賴關係。未經版本控制的文件從其他人那裏從perforce服務器獲得,我想使用它們而不必再次檢查一切。 – steve 2012-02-07 15:50:15

回答

4

如果我理解你的處境:

  • 你對一個非常大的項目。
  • 您有一個本地快照,不完全是最新的數據。
  • 您只希望獲得快照與服務器上最新的快照之間的差異。

你應該遵循的步驟如下:

  • 運行p4 sync -k使Perforce公司認爲你有所有文件的最新版本。
  • 運行p4 diff -se ... | p4 -x - sync -f強制同步任何過時的文件
  • 運行p4 diff -sd ... | p4 -x - sync -f迫使同步丟失的任何文件

在這一點上,你可能有一個從服務器中刪除本地文件。如果你關心這些,你可以編寫一個簡單的腳本來檢測它們並將它們從你的文件系統中刪除。

的好消息是,Perforce公司的下一個版本(2012.1)具有status命令,將更加容易地拿起所有的差異。

要從另一個角度來解決這個問題,您是否需要在您的工作空間中使用整個項目?你能縮小你的工作區視圖,只能處理一部分數據嗎?

+0

有關'status'命令的優秀新聞。你能舉一個它的用法的例子嗎? – Dennis 2012-02-07 16:04:54

+1

查看[此鏈接](http://www.perforce.com/blog/120126/new-20121-p4reconcile-p4status)查看p4 status的示例 – user1054341 2012-02-07 17:05:26

+0

p4通過user1054341鏈接的博客已移動;鏈接現在http://www.perforce.com/blog/120206/new-20121-p4-status-and-p4-reconcile – Timbo 2013-05-14 00:45:33

2

這是一個經典的Perforce問題。

要達到此目的,您需要將幾個命令組合在一起。

p4 diff -sd //Depot/Path/... | p4 -x – sync -f

  1. p4 diff -sd命令會發現所有不工作空間中的文件。
  2. p4 -x – sync -f將強制同步這些文件。

由於P4-蘭德爾在他的answer,您可能還需要運行p4 diff -se ... | p4 -x - sync -f同步是出過期的任何文件。

HTH,