2009-03-04 65 views
3

我已經簽出perforce客戶端上的幾個文件。 我可以通過'p4打開'命令獲取這些文件的列表 它給出的形式//depot/...像 我想知道如何將其轉換爲本地路徑上的路徑(我的意思是客戶端路徑) ,這樣我可以創建一個批處理文件來備份那些就在一天結束前 由於事先 烏代Perforce保存已打開文件的本地副本

+0

你可能想檢查這個問題:http://stackoverflow.com/questions/300692/how-to-convert-perforce-depot-locations-to-client-view-locations – 2009-03-04 06:22:54

回答

5

您可以使用p4 where將depot filespecs轉換爲本地文件規格。

要解析的p4 where從Windows批處理文件的輸出,像下面這樣可以幫助:

for /f "tokens=3" %%i in ('p4 where %my_depot_filespec%') do echo %%i 

注意,for循環的身體可以執行不止一次更加複雜的映射,比如如p4 where文檔中所述。如果你需要處理這些,你可能需要做更復雜的解析。

+0

有一點需要記住的是,p4在哪裏只會報告文件的位置。它不檢查它是否存在。 – 2009-03-04 06:18:57

+0

@Jonathon:好點。即使存在於軟件倉庫中,也可能不會同步到客戶端。 – bk1e 2009-03-04 06:23:56

1

檢查P4的客戶,因爲你已經定義//庫映射到你的文件系統路徑。用//取代depot來獲取文件的本地路徑,以便備份。

我不知道如何在批處理文件中編程。

2
p4 where filename 

這是您正在查找的命令。

它將列出本地文件系統上文件的軟件倉庫路徑,客戶端路徑和絕對路徑。只需將輸出管道輸入到cut並選擇絕對路徑並將其複製。

+0

該OP提到使用一批暗含Windows的文件。剪切命令可能不可用。 – 2009-03-04 18:27:11

3

你也可以考慮爲什麼你覺得有必要在每天使用Perforce本身結束時備份文件。

您可能會發現,在每天結束時使用開發分支並提交更改(在「重新打開編輯」標誌時)實際上會更容易和更好。首先,您將使用Perforce跟蹤您的更改,而不是您自己的手動系統。

使用開發分支意味着你可以做這些簽入而不會讓你的同事搞亂。

只是一個值得考慮的建議,就是這樣。

+0

根據我的經驗,在perforce之外在本地維護自己的交互式備份比嘗試維護分支更快,也更不危險。 – justinhj 2009-05-14 16:18:53

1

從待變更表繼BAT腳本副本Perforce的打開的文件
(%1個命令行參數)

P4打開-c%1>開%的1.txt
爲/ F「令牌= 1 delims =#「%% i IN(open-%1.txt)do call:add-to-zip %% i

:add-to-zip
for/F」tokens = 3「%% j IN ('p4 where%1')做zip [zip-file-name] %% j

0

謝謝了:-)只是搜索命令,它可以給我打開文件的客戶端路徑與備份文件相同的原因。不只是我得到的命令,但腳本太:-)

4

此批處理腳本可以將文件壓縮到單個更改列表。

for /F "tokens=1,5,6 delims=# " %%a IN ('p4 opened') do for /F "tokens=3" %%j IN ('p4 where %%a') do zip %%b%%c %%j 

它會創建文件是這樣的:

change571620.zip 
change673450.zip 
change723098.zip 
defaultchange.zip 
1

此批處理腳本可以zip文件安裝到單個更改列表。

for/F「tokens = 1,5,6 delims =#」%% a IN('p4 opened')do for/F「tokens = 3」%% j IN('p4 where %% a')做拉鍊%% b %% c^%%Ĵ

它會創建文件是這樣的:
change571620.zip
change673450.zip
change723098.zip
defaultchange.zip

0

僅供參考,如v2012/2013,您最好使用Perforce的擱置功能進行日常備份操作。您團隊中的其他用戶也可以訪問這些貨架。以這種方式使用它進行備份可以防止您的歷史記錄受到您不太關心的中間文件變體(或其中部分文件不適合簽入)的污染。