在使用P4进行远程提交时,如何为本地提交设置Git?

我工作的地方使用Perforce环境但我们不允许在我们的功能完成并准备好进行测试之前办理登机手续。我需要能够进行本地提交,因为有时我已经检查了超过50个文件一周而没有对我的更改进行任何版本控制。 Git符合我的目的,但我不确定如何将其设置为与我的其他环境最佳集成。 我的目标是: 在处理某项功能时,我会 喜欢能够完全忽略 Perforce,编辑和提交尽可能多 我喜欢(在Git中)。 在提交功能之前,我需要 能够进入P4V或P4Win 区分文件并确保 一切都是最新的,之后 测试我想要所有的改变 在一次提交中。 看起来在我的本地工作区的根目录下创建一个git存储库会起作用,但我有一些问题...... 此存储库中有大量文件,至少初始提交git正在爬行。 当我从Perforce“获取最新信息”时,我需要能够轻松更新git存储库 我不想在编辑之前检查Perforce中的每个文件,也不想在Perforce中执行Force Sync,因为它们是未检出的可写文件。 谁能给我一些关于此的提示?我一直在看git中的子模块作为一种可能减少git repo大小的方法,因为perforce repo的很多部分我都不需要进行版本控制。     
已邀请:
你应该使用git-p4。这个答案也许有帮助。     
我目前正在使用这个工作流程,它非常棒 出于公司原因,我无法使用git-p4命令,但我的客户端工作区目录中有一个git repo。我们的设置只有配置代码签入源代码控制,其余的开发设置存储在ZIP中。因此,我无论如何都不会在工作区根目标上调和,这有额外的好处,不需要明确地忽略
.git
。 解决你的观点: 初始提交可以预期......好吧,不是最快的。它不是克隆现有的回购,而是从头开始构建一个回购。 偶尔我会保存+承诺我正在做的事,
git checkout master && p4 sync && git add --all . && git commit -mupdate && git checkout feature-branch
然后继续破解。合并在Git中比在Perforce中更平滑,所以通常你不必因为冲突而打破焦点。 @ p4mataway告诉我他们正在努力合并更好,所以这将是很好看的。 我打开了'allwrite'工作区选项(不要将未经编辑的文件保持为只读),当我准备好检查某些内容时,我会将该分支合并到
master
然后在P4V中进行协调。我也是从命令行那样做的,但又是公司的原因。很长的故事。 在处理涉及对同一文件进行多项更改的功能时,Git对我非常有用,因为长期未决的更改往往会发生 - 通常是数据库架构更改,需要重置我们的应用程序的数据库而我们不想这样做现在在测试服务器上,因为QA处于场景的中间。更改列表保留的时间越长,某些不相关的工作就越有可能触摸其中一个相同的文件,并且能够在本地进行分支,从而使更改不会卡在一起。仅此功能就足以使整个设置完全值得。 免责声明 - 我不打算永远保持这个Git回购。一旦通过即将进行的服务器升级解决了一些公司原因,我将能够使用我们当前环境不支持的一些非常闪亮的Perforce功能。     
我在使用StarTeam和git时做同样的事情。我不熟悉perforce语法,但概念应该匹配。 首先,初始git提交总是很慢。之后,扫描已更改的文件可能需要5-10秒才能进行暂存,但提交应该在大多数时间几乎立即发生。对于上下文,我们的代码库有大约50,000个版本化文件。 我保持
master
与StarTeam同步,但不直接在其中进行任何开发工作。我做了
git checkout master
,然后进行StarTeam更新,然后进行git add和commit。 然后,为了我的工作,我创建了一个新分支,在那里完成所有工作,在
master
中再做一次StarTeam更新,并在提交给StarTeam之前将我的功能分支合并回
master
。因此,StarTeam检查输入和输出都在
master
完成,并且开发总是在其他分支中完成,这使得StarTeam更新保持清洁。 这种混合方法还有一些其他好处,比如能够将部分工作搁置一段时间用于代码审查,现场问题或其他任何方面。我目前在各种使用状态下有5个git分支。放入临时调试代码也很不错。     
这是一个粗略的解决方案。从
p4
同步后,在该目录中执行
git init
,添加所有文件并提交它们。你的工作完全忽略git然后添加并提交回
p4
。 在这个问题中讨论了这个和一些相关的事情。     
无论如何,当您使用P4V时,我建议您至少尝试相对较新的离线支持选项。它允许您访问大部分内容(除了使用Git)。     

要回复问题请先登录注册