假设我有一个文件//depart/Project.com/company/Project/SomeClass.java,其名称为"version--1.0.0"。突然间,我需要恢复到那个标签来创建一个错误修复版本。我更新了它,然后对SomeClass.java.进行了更改
这是我不明白的部分。如何在不覆盖源树的任何更新版本的情况下将修复的SomeClass.java提交给Perforce?对于Mercurial或Git,我会有一个有固定源代码的分支,我只会从那里创建错误修复构建。但现在我不知道该把固定文件放在哪里。
尽管术语有点不同,但Perforce中的选择与其他系统中的选择基本相同。
简单的解决方案是更改SomeClass.java,然后创建一个新标签,称为"版本-1.0.1",它标记SomeClass.jar的新版本,而不是旧版本,但在其他方面与版本-1.0.1标签相同:
p4 sync //...@version-1.0.0
p4 edit SomeClass.java
p4 submit -d Fixed_that_nasty_bug
p4 label version-1.0.1
p4 labelsync -l version-1.0.1
或者,您也可以在Perforce中创建分支,并可以使用您的标签作为创建该分支的基础。
所以你可以做一些类似的事情:
p4 integrate //depot/Project/...@version-1.0.0 //depot/rel-1.0.1/Project/...
然后,您可以对//depart/rel--1.0.1/Project/…/SomeClass.java进行更改,并将其提交回rel-1.0.1分支。
如果这是你第一次思考开发分支、发布分支等问题,我可以建议你阅读一下http://www.perforce.com/perforce/conferences/us/2005/presentations/Wingerd.pdf或者拿起一本Laura Wingerd的《实用表演》,阅读关于"主线模型"的章节?