使用hg命令同时操作git和hg
我有一个mercurial存储库和一个git存储库。两者都使用相同的代码和相同的更改集使用hg命令同时操作git和hg,git,version-control,mercurial,hg-git,Git,Version Control,Mercurial,Hg Git,我有一个mercurial存储库和一个git存储库。两者都使用相同的代码和相同的更改集 当我对hg存储库进行任何更改时,提交并将其推送到hg存储库,同样的更改也应该推送到git存储库。这可能吗?如何启用?在mercurial存储库上启用扩展hg git,并使用提交后和更改后组挂钩。在这些钩子中,推送到git存储库 编辑: 只需将hg git的非标准扩展(请参阅)放在某个地方,然后编辑您的.hgrc: [extensions] hggit = /path/to/hg-git/hggit [hook
当我对hg存储库进行任何更改时,提交并将其推送到hg存储库,同样的更改也应该推送到git存储库。这可能吗?如何启用?在mercurial存储库上启用扩展hg git,并使用提交后和更改后组挂钩。在这些钩子中,推送到git存储库 编辑: 只需将hg git的非标准扩展(请参阅)放在某个地方,然后编辑您的.hgrc:
[extensions]
hggit = /path/to/hg-git/hggit
[hooks]
changegroup.git = hg push git+https://path/to/git-repo.git
post-commit.git = hg push git+https://path/to/git-repo.git
也请阅读hgrc/HOOK。跟进飞机制造商的回答
[path]
部分hg push GIT
的[hooks]
部分中创建传出钩子,其中GIT-来自[path]
的GIT存储库的名称[paths]
github = git+ssh://git@github.com/lazybadger/Fiver-l10n.git
default = ssh://bigbadger@hg.code.sf.net/u/bigbadger/code
...
[hooks]
outgoing = hg push github
通过这种方式,我将在推送SF的回购之后再推送GitHub的回购——推送可以从任何Mercurial客户端完成:命令行、TortoiseHG、SmartGit
(我不使用hook名称,因为现在它是单钩子,在推送到sf之前,我必须使用我的密钥运行Pageant以访问Git repo的ssh类型)
对于纯CLI用例,您还可以使用惰性方式:create,它将在new命令中组合两个push,并仅使用此命令从命令行进行push,而不是“classic”hg push
。对于我的回购样本,它可以是(不带错误检查的快速脏样本)
而对于push,只有
hgpushc
似乎才是有希望的。你能分享更多关于这方面的细节吗?我按照你的指示把所有东西都放在了.hgrc文件中。现在,当我提交代码并将其推送到hg存储库时,它只会被推送到hg存储库。它不会进入git。没有记录任何错误。有什么问题吗?对不起,但是1)我可以;t发现提交后类型的钩子2)本地存储库的changegroup钩子的想法是错误的-它在“从其他地方将一组变更集引入存储库后”激活,即在提交时|分解为本地repo,而不是推送到远程hg@LazyBadger:使用这两个钩子,post-commit和changegroup应该涵盖这两种情况,本地提交的变更集(提交后)以及来自另一个repo(变更组)的变更集。本质上,如果您总是只进行拉式提交或只希望进行本地提交,那么其中之一可能是不必要的。hgrc帮助中没有明确给出post-commit钩子,而是在“post”下进行了总结——“OP只想让手动(sic!)推送重复,您得到了:本地repo中的所有更改都已发布。”。另一种方法和坏主意(tm)我尝试了最后一种选择。当我使用hgpushc
时,它在git上给我一个错误,如abort:error:nodename或servname提供,或未知
我使用的是两个bitbucket存储库;一个是git,另一个是mercurial。现在,当我用在GitHub中创建的新repo来回复git repo url时,它对我起了作用。不确定比特桶中的git回购有什么问题。
[alias]
pushc = !hg push && hg push github