我工作的地方使用Perforce环境但我们不允许在我们的功能完成并准备好进行测试之前办理登机手续.我需要能够进行本地提交,因为有时我已经检查了超过50个文件一周而没有对我的更改进行任何版本控制.
Git符合我的目的,但我不确定如何将其设置为与我的其他环境最佳集成.
我的目标是:
看起来在我的本地工作区的根目录下创建一个git存储库会起作用,但我有一些问题......
谁能给我一些关于此的提示?我一直在看git中的子模块作为一种可能减少git repo大小的方法,因为perforce repo的很多部分我都不需要进行版本控制.
我正在尝试将项目从我公司的Perforce仓库导入到git存储库中.我已成功将单个分支转换为单个git仓库,但我想要做的是将整个项目加上所有分支,但我无法使其正常工作.
我有我的.p4settings文件:
P4PORT=perforce-server.local:1666
P4USER=my.username
P4CLIENT=my.clientspec.name
Run Code Online (Sandbox Code Playgroud)
Clientspec非常简单:
//project/... //my.clientspec.name/project/...
-//project/External/... //my.clientspec.name/project/External/...
Run Code Online (Sandbox Code Playgroud)
第二行是从结帐中排除外部库二进制文件.
我使用以下命令行启动git-p4导入:
git p4 clone --verbose --detect-branches --max-changes=100 //project/...@all
Run Code Online (Sandbox Code Playgroud)
这将检查所有分支名称等,并尝试从第一次提交开始导入(此特定项目从changelist 771开始)
Importing from //project/...@all into project
Initialized empty Git repository in /Users/grant/Development/git_test/project/.git/
Reading pipe: git config git-p4.useclientspec
Reading pipe: git config git-p4.user
Reading pipe: git config git-p4.password
Reading pipe: git config git-p4.port
Reading pipe: git config git-p4.host
Reading pipe: git config git-p4.client
p4 -G branches
Opening pipe: p4 -G branches
p4 -G branch -o branch-1
Opening pipe: p4 -G branch …Run Code Online (Sandbox Code Playgroud) 如果您远程使用perforce并且希望获得用于跟踪差异的强大git速度,则可以使用以下解决方案:http://kb.perforce.com/article/1417/git-p4
但是,我注意到以下几点:
这是我的问题.git-p4如何使用远程存储库有一个很好的解释吗?热git-p4的整体解释有效吗?
git-p4不适合胆小的人.我知道你真的需要理解git才能很好地使用它.
最近我一直在使用git-p4遇到问题.
我目前的工作流程是:
git checkout -b some_feature
# do some work and commit to some_feature branch
git checkout master
git merge --no-ff some_feature
git p4 rebase
git p4 submit
Run Code Online (Sandbox Code Playgroud)
并非总是如此,但偶尔执行时git p4 submit,更改实际上并不适用,而是我看到:
error: some_file.extension: patch does not apply
Run Code Online (Sandbox Code Playgroud)
做了一些研究,我尝试在主机上进行硬重置并在没有--no-ff标志的情况下再次合并,但这似乎没有帮助.
任何想法都非常感谢.
我想使用git对特定文件进行一些临时管理。该目录结构中有许多我不想要的文件(并且 git 不能很好地处理),但我需要对这个文件使用其补丁管理功能。
我想使用 git-p4。是否可以克隆一个文件而不是整个目录结构?
我尝试在一个repo上运行git p4 submit,我一直在运行它作为git和perforce之间的临时桥梁.多人使用repo作为遥控器,并定期将其提交回perforce.
除了一些重复的perforce提交之外,它一直很好地工作,其奇怪的行为我似乎无法再现.然后有一天,我得到了这个错误.我不能再将任何git提交到perforce.
user@hostname:~/Source/code$ git p4 submit -M --export-labels
Perforce checkout for depot path //depot/perforce/workspace/ located at /home/user/Source/git-p4-area/perforce/workspace/
Synchronizing p4 checkout...
... - file(s) up-to-date.
Applying ffa390f comments in config xml files
//depot/perforce/workspace/sub/folder/structure/first.xml#3 - opened for edit
//depot/perforce/workspace/sub/folder/structure/second.xml#3 - opened for edit
//depot/perforce/workspace/sub/folder/structure/third.xml#3 - opened for edit
//depot/perforce/workspace/sub/folder/structure/forth.xml#3 - opened for edit
//depot/perforce/workspace/sub/folder/structure/fifth.xml#1 - opened for edit
error: patch failed: sub/folder/structure/first.xml:1
error: sub/folder/structure/first.xml: patch does not apply
error: patch failed: sub/folder/structure/second.xml:1
error: sub/folder/structure/second.xml: patch does not apply
error: patch …Run Code Online (Sandbox Code Playgroud) 执行git-p4 clone --use-clientspec完之后,我想在clientspec中添加一个额外的条目,并将添加的条目的当前状态导入到我的Git存储库中.
在我扩展了clientspec之后,a git-p4 rebase什么也没做(可能是因为自上次提交的更改以来没有新的相关更改列表,我所做的就是更新clientspec)
我试过做了git-p4 sync --use-client-spec,但是抱怨快速导入失败了,因为新的提示不包含我的初始提交.
有没有办法扩展客户端规范,而无需git-p4 clone从头开始新的Git存储库?
我正在从Perforce迁移到git,在这个过程中我正在努力使文件结构正确.
目前的perforce结构是这样的:
//depot
/android
/main
/other_branches
/core_library
/main
/other_branches
Run Code Online (Sandbox Code Playgroud)
我在git中拍摄这样的东西:
/android
/core_library
Run Code Online (Sandbox Code Playgroud)
我设置了我的客户端规范View如下(我稍后会担心分支):
//depot/android/main/... //p4-git/android/...
//depot/android/core_library/main/... //p4-git/core_library/...
Run Code Online (Sandbox Code Playgroud)
我运行以下命令,显示完整的提交历史记录,但没有文件.
set P4CLIENT=p4-git
git p4 clone --use-client-spec //p4-git/@all
Run Code Online (Sandbox Code Playgroud) 安装git之后- 我尝试克隆现有的p4分支,但它失败并显示以下信息:
c:\P4_GIT\DT>git p4 clone //depot/CTAT/Windows/OneP/
fatal: 'p4' appears to be a git command, but we were not
able to execute it. Maybe git-p4 is broken?
Run Code Online (Sandbox Code Playgroud) 最新的git-p4脚本(https://github.com/ermshiperete/git-p4)有一个"搁置"但没有"取消搁置"的命令.如何使用它取消更改?