问题标签 [git-p4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1166 浏览

git - git-p4 在不同的分支和仓库上同步

我正在尝试镜像一个 perforce 存储库,并且 git-p4 在主分支上表现得足够好。我只需要打电话git-p4 rebase。我也在尝试镜像一个不同的分支,但这并不容易。我以为我可以做 agit-p4 rebase --branch=p4/whatever //open/branches/whateverrebase似乎忽略了这些标签,如果我做 async相反,我会收到错误消息:fast-import failed: warning: Not updating refs/heads/p4/whatever (new tip 14f7e14e5079bb730363440901adee102e5f04c9 does not contain 0ca89b0333f408367e3676720b109a08cc40b3ae)

我最初的导入是与@all 同步,为什么它不能更新,或者有不同/更好的方法来做到这一点?

0 投票
4 回答
7077 浏览

git - 从 git 迁移到 Perforce

我的任务是将我的团队和源代码从 git 迁移到 Perforce,我正在寻找有关如何将 git 历史迁移到 p4 的想法。

我很乐意只移动主分支。然而,即使这样也被证明是有问题的。

我正在使用出色的 git-p4 工具。我在我的 p4 工作区中创建了一个目标区域,并用于git p4 clone //depot/StuffFromGit在 git-p4 中开始跟踪它。我将所有 git 存储库的更改移植到 git-p4 克隆中。我可以然后git p4 submit完成,所有更改都推送到 p4。

当 git 历史看起来像这样时,它工作得很好,很好而且线性:

问题来自多个从事该项目的人。即使他们在 master 上工作,仍然会创建拆分和合并的分支。尽管如此,git-p4 还是勇敢地处理了这个问题:

git p4 遍历 OK,按顺序提交 ABCDE(或 ABDCE,任一人的历史优先)。

例如,当 C 和 D 都更改同一个文件,而 E 是真正诚实的合并时,就会出现问题。git p4 rebase在这里失败;它会倒回提交,但在播放期间它会先应用 C,然后尝试 D 并找到冲突。然后它会停下来,要求我合并。好吧, E 包含合并,但它要求我手动合并!'git p4 submit' 将以类似的方式失败,只是现在它是 p4 拒绝合并前的更改。

所以现在我被困住了。有没有办法清理 git 历史或让 git-p4 理解它?合并的存在令人沮丧。

我有过的想法:

  • 使用 git filter-branch 删除所有提及的冲突文件。尽管缺少许多文件更改,但我会获得历史评论。在历史记录中大约有 3000 次提交,我最终会删除所有关键(忙碌)文件的历史记录。在过滤文件导入结束时,我将通过对 HEAD 进行最终提交来添加丢失的文件。
  • 转储历史,对 HEAD 进行一次 p4 提交(简单但可悲)。
  • 不移到 p4:我已经尽可能长时间地实现了这个想法。

没有一个真的很棒。关于如何 git 'gt p4 rebase' 或 'git p4 submit' 工作的任何想法?

0 投票
1 回答
474 浏览

windows - git-p4 克隆的 repo 包含混合文件名大小写 - 如何修复?

我使用 git-p4 导入了一个大型 repo,发现我有一些奇怪的混合大小写的文件名,例如:

然后像这样的其他文件:

等等。因为 git-p4 使用快速导入,这些以这种方式进入 repo。这导致 Git 神秘地声称存在未跟踪的目录,这些目录绝对不是未跟踪的,并且其中没有新文件。我从阅读这个问题中发现:

添加后git仍然未跟踪

特别是 slayerIQ 的回答,这可以通过重命名有问题的目录以具有匹配的情况来解决。事实上,在一些文件只有一个案例格式的情况下,这修复了它。但对于我上面提到的那些混杂的,它什么也没做。这种列表证实了我对这个案子的怀疑:

我考虑过使用历史重写来尝试修复它,但这似乎非常重量级,除非我必须这样做,否则我有点犹豫(树是 ~25K 文件)。另一方面,我在干净的树上执行“git status”并获得大约 35 个“未跟踪”路径的列表。所以有点站不住脚。

如果需要,我可以从头开始克隆 git-p4,但我怀疑混合大小写路径来自 Perforce 本身。SmartGit 的树没有这个问题,并且将确切的树复制到新的 repo 工作正常(因为它已正确添加)。

关于如何进行的任何想法?

谢谢 :)

0 投票
5 回答
3778 浏览

git - `git-p4 clone` 失败“新提示......不包含......”

我在 Windows 上运行,使用 windows p4 客户端,并通过 Cygwin 安装 git。p4 客户端宣传它的语法如何跨平台和所有这些都是规则的,所以这应该是 hunky-dory。

所以当我去的时候git-p4 clone --verbose //depot/path/to/source,它列出了存储库中的所有文件,就好像它们被签出一样,然后死了说

例外:快速导入失败:警告:未更新 refs/remotes/p4/master(新提示 cd601b92da8625c90af05685e450e55b6d19c9e9 不包含 3a512c9408e3cbeef 94c78dfd7115f81e4a6fd0d)

并以一大块“git-fast-import statistics”结束。查看错误:新提示?嗯?什么需要包含它?

我剩下的是一个 .git 存储库,它有几个兆(比完整的源代码树要小得多)。有任何想法吗?

0 投票
2 回答
409 浏览

git - git-p4 导入树包含子目录 .git

我们公司使用 Perfoce 来管理项目,我正在使用 git-p4 在本地同步 Perforce 存储库。但是在 P4 存储库中,它与许多模块组合在一起,并且可能包含某些模块的 .git 文件夹。有人在本地使用 git 并将 .git/ 放到 Perforce :(

当我通过 git-p4 clone 克隆 P4 时,它总是说一些文件被删除了。

我尝试使用“git filter-branch”来删除这些文件,但它禁止在肮脏的工作目录上使用。

我该如何解决这个问题?在我之前的解决方法中,我只是通过 Perforce 工具删除了这些 .git 文件夹,然后再次克隆整个项目。

0 投票
5 回答
660 浏览

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

我工作的地方使用 Perforce 环境,但在我们的功能完成并准备好进行测试之前,我们不允许签入。我需要能够进行本地提交,因为有时我已经在一周内签出超过 50 个文件,而我的更改没有任何版本控制。

Git 符合我的目的,但我不确定如何设置它以最好地与我的其他环境集成。

我的目标是:

  • 在开发一个功能时,我希望能够完全忽略 Perforce,并尽可能多地编辑和提交(在 Git 中)。
  • 在提交功能之前,我需要能够进入 P4V 或 P4Win 来比较文件并确保所有内容都是最新的,并且在测试之后我希望我的所有更改都在一次提交中。

似乎在我的本地工作空间的根目录中创建一个 git 存储库会起作用,但我有一些问题......

  1. 这个存储库中有大量文件,至少在初始提交时 git 正在爬行。
  2. 当我从 Perforce “获取最新”时,我需要能够轻松更新 git 存储库
  3. 我不想在编辑之前在 Perforce 中检查每个文件,也不想在 Perforce 中进行强制同步,因为它们是未签出的可写文件。

任何人都可以给我一些提示吗?我一直在将 git 中的子模块视为一种可能减小 git 存储库大小的方法,因为 perforce 存储库中有很多部分我不需要版本控制。

0 投票
1 回答
1568 浏览

python - 无法在 Windows 上使用 git-p4 导入

我一直在尝试使用 git-p4 python 脚本将 p4 仓库路径导入 git。配置我的环境(git 1.7.1、python 2.7、Windwos XP、p4 env 变量)后,我尝试运行 git-p4 脚本,得到以下输出:

有人知道这里发生了什么吗?如果我尝试从命令行 shell 运行第 332 行声明的 git 命令(git rev-parse origin),则该命令将正确执行。

谢谢。

更新:似乎脚本无法启动其 exec 文件不在执行路径中的任何进程。我认为这是Windows上python的初始化问题...

0 投票
1 回答
1229 浏览

git - Perforce 文件“.perforce”的用途是什么?

Perforce配置文件的用途是什么.perforce?我在哪里可以找到显示其内容的示例文件?

Git-p4 Usage引用了这个文件,但我的任何工作区和主目录中都没有这个文件,也没有在任何其他 Perforce 文档中看到这个文件。它在上下文之外是否有任何目的git-p4?它适用于 Windows 和 Unix 环境吗?

0 投票
2 回答
1079 浏览

git - 使用 git-p4 设置 perforce 客户端的 git 克隆

我有一个 perforce 客户端,它将多个 perforce 路径映射到我的本地客户端。这些 perforce 路径用于库和主代码行。

如何使用 git-p4 在单独的目录中设置整个客户端的克隆?

从我看到的 git-p4 只能克隆特定的仓库路径。我想克隆整个客户端:假设我的 perforce 客户端是 test_client。我想要做:

或类似的东西会将所有目录拉入这个单独的 git 目录。

0 投票
1 回答
1155 浏览

git - git-p4 提交失败

我正在使用 git-p4 在本地使用 git 并尝试将我的更改提交回 perforce 服务器。它提交更改回我没有做的服务器。

我设置了一个客户端,以便它包含客户端中的所有库依赖项(遵循Using git-p4 to setup a git clone of a perforce client 中的建议)

但是对于主线源,我在工作区目录中执行以下操作:

这将在工作区中创建并填充 my_project 目录。

这样 src 中的代码就可以引用库了。

问题是当我做 git-p4 rebase 我得到以下错误:

当我执行 git-p4 submit 时(在我进行单一更改并执行 git commit -a -m "test" 之后):

......

它需要很长时间(它是否向服务器询问所有变更集??)并且失败并出现错误:Traceback(最近一次调用最后一次):

我应该注意到我没有使用 git config 来设置任何 git-p4 选项(https://git.wiki.kernel.org/index.php/Git-p4_Usage上的 wiki似乎没有提到它需要)。