2010-09-28 68 views
7

我想要一個快速的解決方案,不需要強制同步,將指定的目錄放到其原始存儲庫狀態。Perforce將目錄快速同步到一個乾淨的狀態

  • 相同的文件可以從磁盤被移除
  • 相同的文件可以從磁盤添加
  • 某些文件可能在磁盤上被修改
  • 一些文件可以被標記爲刪除,添加或修改中的Perforce

我想要的是要確保如果運行命令後,我將沒有這些。

p4 -f sync不是一個選項,我需要一個更快的解決方案,儘量減少網絡使用。

爲了防萬一有人問,perforce代理是沒有討論。

我知道的部分解決方案是:

p4 diff -sd -se //clientspec/dir/... | p4 -x - revert

的問題是,這不排除加入到上述不在Perforce的路徑文件 - 我希望從刪除的文件磁盤。

此外,我需要一個多平臺或跨平臺的解決方案 - 它必須在Windows,OS X和Linux上工作。

回答

0

如果你有Unix/Linux這可能工作。

在Perforce中,您可以通過p4v「協調離線工作」,如here或通過命令行看到here.您在恢復編輯和刪除的文件時已經按照您的問題覆蓋了後者。添加的文件更加棘手。第二個環節可以讓你做到以下幾點。

find . -type f -print | p4 -x - add 
find . -type l -print | p4 -x - add 

添加文件和符號連接Unix中

棘手的部分是物理去除您已經添加的文件。這不太好,但我認爲它會起作用。 p4打開| grep add | cut -f1 -d「#」| p4 -x-其中|切-F3 -d」「

然後,你需要做一個

p4 revert directory/... 

或做刪除文件時,上述類似的東西。

0

我需要這個與svn構建服務器。我到底做的是:

  • 更新工作區
  • 刪除舊的「建立文件夾」,如果有一個
  • Xcopy的工作區「建文件夾」
  • 執行建設「生成文件夾」

這樣我就知道沒有什麼可以掛在舊版本上了。

2

另一個Unix/Linux操作系統片斷,它應該刪除從未被Perforce公司跟蹤的所有文件:

find . -type f | p4 -x- files 2>&1 | sed -n -e 's/ - no such file(s).//p' | xargs -d '\n' rm

+0

以上將刪除所有打開添加的文件... – John 2013-02-19 15:02:01

5

Perforce公司已在2014.1添加了一個新的命令「P4乾淨」已經做了你正在尋找什麼對,你的工作空間重置爲#have狀態:

Perforce中
  • 新的文件將不被刪除
  • 文件的Perforce控制外修改將RESE牛逼
  • 文件的Perforce控制外刪除將恢復

的命令是「P4調和-w」的別名,並使用這些文件的哈希和以確定您的工作空間的狀態。