Perforce 相当于 git 本地提交
Perforce equivalent of git local commit
我在使用 Git 一年后才开始使用 Perforce。在 perforce 中是否有任何相当于 git 本地提交到我的分支。
基本上,如果我想处理一项可能需要撤消和重做我的特定更改的复杂任务,是否有任何方法可以在 Perforce 中完成此任务?我在 Git 中的做法是将我的更改提交到一个分支,并在合并到 master 之前在该分支中进行多次提交。
在 Perforce 中执行此操作的经典方法是完全照您说的做 -- 创建一个分支,提交到该分支,然后将其合并回来。与 Git 的一个区别是,在您的分支上所做的每个更改都是永久性的,以后的更改建立在早期的更改之上——您不会通过从历史记录中删除它们来撤消早期的提交,您只需创建其他版本。另一个变化是,当你合并回来时,你在目标分支上创建了一个新的变更列表,其中包含你从源合并的所有变更的总和——所以不是在你的分支上将变更压缩在一起,合并时会压缩更改。您可以分阶段进行合并,甚至可以按照与分支上发生更改时不同的顺序进行合并,这样主分支上的历史记录可能看起来与分支中的历史记录不同(但它会保留指向分支的指针以及)。
Perforce (2015.1) 的当前 public 测试版提供了一种更 Git 的方法,您可以在其中拆分本地 Perforce 存储库,进行更改,并可能重写之前的历史记录将它推回到共享存储库——"local" 历史不一定在共享服务器上的任何地方可见,因为你可以选择重写它(而任何提交到中央服务器的历史,在任何分支上,是永远的,除非管理员将其删除)。有关 Perforce 的新 DVCS 功能的更多信息(同样,这仍处于测试阶段):http://www.perforce.com/perforce/r15.1/user/dvcs_getting_started.pdf
我认为 p4 shelve
在这里可能对你有用。
更长的答案:
p4 的工作方式是您必须使用 p4 edit
, or add a new file using p4 add
解锁文件。这将创建一个 changelist,其中基本上包含为您的下一次提交准备的所有文件。
p4 submit
然后可用于将更改列表中的所有更改推送(在 git 术语中)到 repository/depot.
现在,如果您不想立即提交,可以使用 p4 shelve
搁置这些更改。这将为您的更改列表创建一个本地检查点,您可以返回或撤消。您还可以创建多个搁置的副本,一个接一个地构建。您可能可以使用此命令复制 git 提交的所有功能。
有关详细信息,请参阅 p4 shelve
命令参考。
似乎没有办法在不使用桥接工具将 Git 与 Perforce 连接的情况下完成您想要的。
我目前的工作情况与您相同,我们考虑过尝试使用 Git-Perforce 桥。 Perforce 有一个名为 git-fusion
的 Git 桥,最多可免费供 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 基础架构发生重大变化,您可能必须让您的组织相信它值得进行。
我在使用 Git 一年后才开始使用 Perforce。在 perforce 中是否有任何相当于 git 本地提交到我的分支。
基本上,如果我想处理一项可能需要撤消和重做我的特定更改的复杂任务,是否有任何方法可以在 Perforce 中完成此任务?我在 Git 中的做法是将我的更改提交到一个分支,并在合并到 master 之前在该分支中进行多次提交。
在 Perforce 中执行此操作的经典方法是完全照您说的做 -- 创建一个分支,提交到该分支,然后将其合并回来。与 Git 的一个区别是,在您的分支上所做的每个更改都是永久性的,以后的更改建立在早期的更改之上——您不会通过从历史记录中删除它们来撤消早期的提交,您只需创建其他版本。另一个变化是,当你合并回来时,你在目标分支上创建了一个新的变更列表,其中包含你从源合并的所有变更的总和——所以不是在你的分支上将变更压缩在一起,合并时会压缩更改。您可以分阶段进行合并,甚至可以按照与分支上发生更改时不同的顺序进行合并,这样主分支上的历史记录可能看起来与分支中的历史记录不同(但它会保留指向分支的指针以及)。
Perforce (2015.1) 的当前 public 测试版提供了一种更 Git 的方法,您可以在其中拆分本地 Perforce 存储库,进行更改,并可能重写之前的历史记录将它推回到共享存储库——"local" 历史不一定在共享服务器上的任何地方可见,因为你可以选择重写它(而任何提交到中央服务器的历史,在任何分支上,是永远的,除非管理员将其删除)。有关 Perforce 的新 DVCS 功能的更多信息(同样,这仍处于测试阶段):http://www.perforce.com/perforce/r15.1/user/dvcs_getting_started.pdf
我认为 p4 shelve
在这里可能对你有用。
更长的答案:
p4 的工作方式是您必须使用 p4 edit
, or add a new file using p4 add
解锁文件。这将创建一个 changelist,其中基本上包含为您的下一次提交准备的所有文件。
p4 submit
然后可用于将更改列表中的所有更改推送(在 git 术语中)到 repository/depot.
现在,如果您不想立即提交,可以使用 p4 shelve
搁置这些更改。这将为您的更改列表创建一个本地检查点,您可以返回或撤消。您还可以创建多个搁置的副本,一个接一个地构建。您可能可以使用此命令复制 git 提交的所有功能。
有关详细信息,请参阅 p4 shelve
命令参考。
似乎没有办法在不使用桥接工具将 Git 与 Perforce 连接的情况下完成您想要的。
我目前的工作情况与您相同,我们考虑过尝试使用 Git-Perforce 桥。 Perforce 有一个名为 git-fusion
的 Git 桥,最多可免费供 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 基础架构发生重大变化,您可能必须让您的组织相信它值得进行。