TLDR
如何git p4 submit
在裸回购上运行?那是哪个命令行选项git p4 submit
?
很长的故事
我希望我公司内使用 perforce 的团队迁移到 git。我想使用 Git-P4 来实现这一点。我想将一部分 perforce 克隆到 git repo,并将其作为远程 repo,以便人们克隆它,将更改推送到远程 repo,我会定期将远程 repo 中所做的更改重新提交回 perforce . 所以我跟着这个教程
http://answers.perforce.com/articles/KB_Article/Git-P4
归结为这个命令:
git p4 clone //depot/path.to/folder@all folder --bare
那行得通,然后在我的客户端机器上我做
git clone "user1@server:/home/user1/path/to/folder"
这很好,它出现了,所以我对测试文件进行了编辑,然后执行
git add file
git commit -m 'test'
git push.
这行得通,但是现在回到带有repo的文件夹中的远程repo,我这样做,
git p4 rebase
我明白了
git p4 rebase
Performing incremental import into refs/remotes/p4/master git branch
Depot paths: //depot/path.to/folder/
No changes to import!
fatal: This operation must be run in a work tree
Some files in your working directory are modified and different than what is in your index. You can use git update-index <filename> to bring the index up-to-date or stash away all your changes with git stash.
和
git p4 submit
给了我这个:
Perforce checkout for depot path //depot/path.to/folder/ located at /home/user1/path/to/perforce.folder/
Synchronizing p4 checkout...
... - file(s) up-to-date.
fatal: Not a git repository: '.'
Command failed: ['git', 'rev-list', '--no-merges', 'remotes/p4/master..master']
所以问题是当我提交时git repo不能是一个裸repo,它必须是一个带有工作目录的普通repo,对吗?但如果是这样的话,为什么还要给我一个--bare
选择呢?我选择这个选项的原因--bare
是,当我把它排除在外时,我得到了一组不同的错误,这些错误是关于远程 repo 的工作副本中未提交的更改。但是如何让 git p4 提交而没有任何错误呢?