在Perforce中是否有类似于git stash的功能?

16

我搜索了互联网上所有可能的信息,但就是找不到一个简单的方法来使用Perforce进行本地存储或分支管理。虽然我知道有Perforce的Git封装,但从我阅读的所有内容来看,它似乎并不太成熟或可靠。

3个回答

37
Perforce 2009.2有"shelve"和"unshelve"功能,可以让您将修改放在服务器上,而无需将其检入。这篇文章http://blog.perforce.com/blog/?p=1872提到了相关信息。
我认为这提供了您需要的功能?
如果您还没有使用2009.2版本,也可以考虑使用P4_Shelvep4tar作为替代方案。

3
很遗憾,原帖作者在那个回答之后的4小时内没有检查过这个问题,很可惜那个回答成为了被选中的答案。 - umassthrower

4
关于分支,在Perforce中我怀疑你不能在本地“分支”,也不能原生地隐藏代码。
  • Git基于提交的图形结构(实际上是一个DAG-有向无环图),它将仅显示提交的内容(树和blob)。
  • Perforce是一种线性版本控制系统,基于选择规则的组合(它将根据本地选择规则组合要显示的内容)。
关于分支:
  • Git中的分支只是一个指向提交的轻量级和本地别名(alias)
  • Perforce中的分支是:
    • 代码行(作为名词时最有可能是这个意思)
    • 分支视图规范(由“p4 branch”命令创建的实体-也是名词)-下面将讨论这些
    • 当用作动词(“分支”)时,它意味着使用“p4 integrate”命令创建一个或多个文件的新代码行(或分支!)

正如在这个介绍Perforce分支中提到的,由于Perforce与其中央库紧密相连,因此需要为每个文件创建相关元数据以创建分支。
Git只会写入一些位来注册新分支的创建!

[*] git分支存储在.git/refs/heads/子目录中


25
叹气。我真的开始厌恶Perforce了。为什么人们要为此付费呢? - bergyman
@Chris:嗯...http://stackoverflow.com/questions/1444427/commercial-version-control/1444454#1444454 或者 http://stackoverflow.com/questions/1346031/is-perforce-worth-it/1346196#1346196 - VonC
6
Perforce似乎缺少我认为至少对于自己来说几乎是必不可少的许多工作流程。 我使用过cvs、svn、git,现在是Perforce。毫无疑问,git对我来说最有意义。 现在,如果我正在修复错误,并且遇到其他问题,除手动在更改列表中移动文件以确保不会将未完成的、不相关的工作检入到需要我的注意的新问题中之外,似乎没有什么可以做的。而本地存储或分支则使这个过程变得很容易。我是否错过了一些用Perforce轻松完成此操作的方法? - bergyman
@Chris:在一个基于组合的版本选择系统中(类似于ClearCase系统,如我在https://dev59.com/NHRA5IYBdhLWcg3w9y50#764219中详细说明),当出现“不相关的工作”时,你需要做的是保持当前工作不变,并创建*另一个*Perforce视图或工作区,使用正确的配置来解决那些不相关的工作。 - VonC
4
Perforce是非常糟糕的、我被迫使用过的最差劲的东西。 - Kevin Depue

2
Perforce的未来版本将具有私有本地分支。P4Sandbox将允许您拥有仓库的本地、断开连接的子集。您可以从中央服务器拉取,然后在您的沙盒中进行任何操作(包括分支和集成),如果您希望,可以将更改推回中央服务器。
Shelving是最接近git stash的相当于,正如Douglas Leeder的答案所解释的那样。
(尽管最初似乎P4Sandbox将在2011.1版本中首次亮相,但2011.1 beta没有该功能,我也找不到该版本的文档中提到它的任何信息。截至2011年8月,P4Sandbox beta计划在“今年秋天”发布。)

2
上面的 P4ASandbox 链接是 404。 - Daryl Spitzer
1
看起来P4Sandbox是在2012.3发布的。请参见http://www.perforce.com/perforce/doc.current/user/p4sandboxnotes.txt。另请参见http://www.perforce.com/product/components/server-clients/distributed-version-control和http://www.perforce.com/perforce/doc.current/manuals/p4sandbox/index.html。 - Daryl Spitzer
1
@Daryl,答案和评论中的所有链接都已失效。 - Samuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接