Perforce相当于git本地提交

时间:2015-02-19 23:54:59

标签: git branch perforce shelve p4v

我在使用Git一年后才开始使用Perforce。在perforce中,我的分支是否有任何等效的git本地提交。

基本上,如果我想处理一个可能需要撤消和重做我的特定更改的复杂任务,有没有办法在Perforce中实现这一点?我在Git中这样做的方法是将我的更改提交到分支,并在合并到master之前在分支中进行多次提交。

3 个答案:

答案 0 :(得分:5)

在Perforce中执行此操作的经典方法是完全按照您的说法进行操作 - 创建分支,提交到该分支,然后将其合并。与Git的一个区别是,在您的分支上进行的每个更改都是永久性的,后来的更改建立在早期版本上 - 您不会通过从历史记录中删除它们来撤消先前的提交,您只需创建其他版本。另一个变化是,当您合并回来时,您将在目标分支上创建一个新的更改列表,其中包含您从源中合并的所有更改的总和 - 因此,而不是将更改压缩在您的分支上,合并时压缩更改。您可以分阶段进行合并,甚至可以在分支上发生更改时以不同的顺序进行合并,这样主分支上的历史记录可能与分支中的历史记录不同(但它会保留指向分支的指针)以及)。

Perforce(2015.1)的当前公开测试版提供了一种更类似于Git的方法,在这种方法中,您可以拆分本地Perforce存储库,进行更改,并可能在将历史记录推送回共享存储库之前重写历史记录 - “本地”历史记录在共享服务器上的任何位置都不一定可见,因为您可以选择重写它(而任何分支上提交给中央服务器的任何历史记录都是永久的,除非管理员将其删除)。有关Perforce新DVCS功能的更多信息(同样,这仍处于测试阶段):http://www.perforce.com/perforce/r15.1/user/dvcs_getting_started.pdf

答案 1 :(得分:4)

我认为p4 shelve可能对您有用。

更长的回答:

p4的工作方式是您必须使用p4 edit解锁文件,或使用p4 add添加新文件。这将创建一个 changelist ,它基本上包含为下次提交而暂存的所有文件。

然后可以使用

p4 submit将您的更改列表中的所有更改(在git术语中)推送到存储库/软件仓库。

现在,如果您不想立即提交,可以使用p4 shelve搁置这些更改。这将创建您的更改列表的本地检查点,您可以返回或撤消。您也可以创建一个接一个构建的多个搁置副本。您可以使用此命令复制git commit的所有功能。

有关详细信息,请参阅p4 shelve命令参考。

答案 2 :(得分:1)

似乎没有办法在不使用桥接工具将Git与Perforce连接的情况下实现您的目标。

我目前的工作与你的情况相同,我们考虑尝试使用Git-Perforce桥。 Perforce与Git建立了一个名为git-fusion的桥梁,最多可供20位用户免费使用。这可能是最好的桥梁工具。 Git本身提供了一个名为git p4的命令,它为您提供了一些更有限的功能。使用git p4的工作流程将如下所示:

# do your work and make your git commits
git p4 rebase
git p4 submit

正如您可能已经猜到的那样,git p4 rebase进入存储库并获取该分支中其他用户所做的所有更改,然后再将您的工作提交到最顶层。重新绑定是必要的,因为它模拟Perforce所有提交始终保持不变。

如果您决定使用桥接工具,请意识到这可能会导致IT基础架构发生重大变化,您可能必须说服您的组织值得进行此项工作。