2010-02-04 87 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