2010-02-04 74 views
1

爲項目創建部分版本時,我通常將項目文件夾最新版本與生產標籤進行比較。然後,我必須手動將所有更改/添加的文件添加到臨時文件夾,然後將其複製到生產中。使用Perforce創建構建?

有沒有辦法讓這個自動化?

例如,如果我們需要更新客戶端網站,我們只想發送已更改的文件。目前,爲了確定他們當前的製作網站與我們在源代碼控制中的區別,我們對網站文件夾中的兩個不同標籤進行了區分。然後我們創建一個只有已經改變的文件的版本。

+0

有幾種方法...你目前如何做? shell環境中的'p4'命令? – 2010-02-04 14:49:26

+0

爲什麼不打開文件進行編輯和添加文件時添加? – 2010-02-04 14:50:56

+0

我正在尋找類似的功能,但我的意圖是不同的。我想自動在報告中爲解決方案創建所有使用文件的構建列表。我一直無法找到這樣的工具。 – gsirianni 2010-02-04 14:53:03

回答

0

您使用術語「創建構建」。這聽起來像是指「用Perforce中已更改的內容創建文件,以便我們可以在其他地方更新」。

假設您希望擁有一個包含您想要在生產中使用的文件的Perforce客戶端,然後使用像rsync這樣的工具將它們移動到Web服務器。你的腳本基本上包含「p4 sync & & rsync here」。 Rsync將通過確定不同並移動更改的過程。

如果情況並非如此,您需要更準確地表達您的意思。

+0

我最終創建了一個腳本,它執行「p4 sync //depot/[email protected]」然後「p4 sync //depot/[email protected]」,然後解析已更改文件的列表並將其轉儲一個新的文件夾。感謝您指點我正確的方向。 – Kevin 2010-02-05 15:56:52

0

我不知道我是否正確理解您正在嘗試做什麼,但diffing folder and then manually adding changed/added files確實聽起來像整合(或合併,在其他版本系統的俚語)。

p4 help integrate在命令行上將幫助以及(也許)this Perforce KB article

+0

在問題中增加了更多細節,希望能更好地解釋目標。 – Kevin 2010-02-04 18:25:59

0

使用可用於download的腳本API之一來自動執行該過程。

你選擇哪一個很大程度上是個人喜好的問題,但如果你不是特別熟悉任何支持的語言,我會建議使用Ruby API。

0

如果您存儲打造的產品在倉庫的話,我想你應該做到以下幾點(從美麗的書「實用Perforce公司」):

查找已更改的文件並打開它們進行編輯:

p4 diff -se | P4 -X-編輯

查找被刪除的文件,並打開它們刪除:

P4的diff -sd | p4 -x-刪除

找到新的文件並打開它們進行添加。假設您位於工作區的頂級目錄中:

找到。 -type f | p4 -x-添加-f

完成此操作後,您可以提交待處理的更改列表或繼續處理打開的文件。

如果您需要其他解釋,請給我打電話。

p4 sync //depot/[email protected] 

# delete all files on client - but don't tell perforce about it 
rm -r <root of your client> 

p4 sync //depot/[email protected] 

現在:

1

@Kevin

你或許可以通過以下操作(* nix的版本),跳過 「P4同步//depot/[email protected]」 的解析客戶端應該只有在labelv1和labelv2之間更改的文件。您可以將客戶端上的所有文件複製到您的部署位置。下面的命令爲您提供了一個文件列表:

find <root of your client> -type f