本地提交推送到中央服务器

时间:2009-10-20 13:18:15

标签: visual-studio-2008 git version-control mercurial perforce

在工作中我们使用perforce并被鼓励定期提交它(我很好)。但是,我想运行像mercurial这样的东西,这样我就可以在本地提交正在进行的工作,而不一定编译/运行,然后从我的常规提交到中央perforce服务器。

我的问题有点双重,首先,有人知道Visual Studio将如何处理多个源代码控制绑定(理想情况下我希望一切尽可能自主 - 嘿,我很懒:) )

其次,是否有任何可用的工具可以让我做一些简单的事情,如“检查当前头部的mercurial存储库”。

我似乎记得GIT允许你做类似的事情,我并不完全反对尝试它。

如果我错过了任何明显的事情,或者我的想法完全是错误的,请随时指责我;)

干杯

3 个答案:

答案 0 :(得分:6)

在我看来,你想要的是不同的分支而不是多个SCM系统。如果您想让您的游乐场可以提交正在进行的工作,请在Perforce的主分支处创建一个开发分支。您可以定期更新其他人提交的内容,并在您满意/完成后将您的更改集成回main。

这也消除了VS如何应对它的问题。

答案 1 :(得分:3)

您的想法的兴趣不在于私有提交,而在于“离线开发”:即使没有连接到中央Perforce存储库,Mercurial或Git也允许您工作。

但是关于分支,它们更容易创建或与Hg或Git合并,因此它可能是一个想法。
原则是在Perforce工作区中创建您的Hg或Git仓库。

本文using mercurial with perforce (or some other centralized vcs)确实说明了类似的方法:

  

如果代码已经在perforce中,我将下载一个副本并且hg init一个本地存储库;否则我会初步使用mercurial并稍后检查perforce(通常这是一个尖峰)   我会做一些工作,因为我去了善变   我的perforce提交往往是较小的hg提交的汇总,或者如果我想特别跟踪更改,我将通过使用“hg update”向前滚动历史来检查单个hg提交(稍后将对此进行更多介绍)。 />   不要将.hg文件夹提交到perforce

答案 2 :(得分:2)

Git附带了一个git-p4前端,允许您创建一个新的git存储库,用于跟踪Perforce子树的全部或部分内容。 (不支持复杂的客户端工作区,最后我检查过)。 git-p4通常位于contrib树中,您的Git安装可能会也可能不会,或者您可以获取最新版本here, from git.kernel.org。这个脚本需要Python。

基本上,您git p4 clone是您的上游//depot/path,然后可以git p4 sync将新的更改下拉到您当前的分支,或者git p4 rebase来修改您当前的分支。上游Perforce路径。如果您的git存储库旁边有一个单独的Perforce工作区,则可以git p4 submit。 (我在VMware使用单独的内部工具提交到我们的Perforce服务器,所以我没有使用git p4 submit。)

不幸的是,我不知道VS同时处理git或git和Perforce有多好。我的猜测是任何VS集成都不会处理git-p4的Perforce端,但是你可以按照通常的方式执行所有正常的git操作,只需使用shell来调用git-p4.bat或其他类似的进行Perforce操作。

另一种选择是简单地在Perforce工作区中初始化一个git(或Mercurial)存储库。 Heresomeone who does this with Mercurial的一个示例。