我的Vim的配置文件之前都是托管在Bitbucket的,因为公司用的也是Hg,所以相对对于Hg使用更熟练一点。虽然Hg和Git都是分布式版本管理工具,但是Hg在使用上以及学习上确实简单不少,很容易上手了。但是还是有很多人是喜欢用Git的,所以我必须要把我的Vim的配置同时用Git来进行版本管理,然后push到著名的Github网站,这样Git使用者也可以很方便的watch以及pull我的最新配置(虽然目前还没有什么人watch…)。
之前的做法比较傻,为了让Git和Hg管理同一个目录,通常操作完Hg的push,然后再用Git进行commit然后push,虽然也是能达到版本库同步的目的,但是很繁琐,因为要分别用Hg和Git进行commit和push操作,有时候还会面临merge问题,实在不是一个好方法。
那肯定是有更好的方法咯?当然!有一个Hg的插件叫做Hg-Git正好满足了这样的需求。
什么是Hg-Git
Hg-Git是Mercurial(Hg)的扩展插件,为Hg增加了从Git服务器pull和push到Git服务器的功能。这意味着你可以从Git的服务器上pull代码然后转变成Hg版本库来进行管理,同时意味着你可以同时把你的Hg版本库push到Git服务器。
安装Hg-Git
简单方式
在你的命令行终端里运行easy_install hg-git,然后查看你的~/.hgrc文件里是否有如下几行代码
[extensions] hgext.bookmarks = hggit = |
esay_install 是python 包管理工具,它的作用类似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan,或者haskell 中的cabal。
手动方式
从Hg-Git托管在Github的代码库http://github.com/schacon/hg-git/zipball/master里下载然后放置到某个目录。当然前提是你安装了0.4.0或者更新版本的dulwich。你可以使用easy_install ‘dulwich>=0.4.0’ 命令进行安装如果你安装了setuptools。接着打开你的~/.hgrc文件,复制并编辑如下配置
[extensions] hgext.bookmarks = hggit = [path-to]/hg-git/hggit |
这样就安装好了Hg-Git扩展,这里的配置中bookmarks的配置并不是必须的,但是当在push的时候它会被转化成Git的heads。
用法
如果你想要用Hg clone一個Git版本库,只需使用hg clone [url]便可,例如
$ hg clone git+ssh://git@github.com:Leeiio/Vim.git |
push的命令也很简单
$ hg push git+ssh://git@github.com:Leeiio/Vim.git |
如果不想每次输入这么长的git服务器地址,你可以打开.hg/hgrc文件,编辑如下
[paths] default = https://leeiio@bitbucket.org/leeiio/vim git = git+ssh://git@github.com:Leeiio/Leeiio.git |
这样便可以直接使用如下命令来进行push操作了
$ hg push git |
更多使用方法参见 http://github.com/schacon/hg-git
同步目前已存在的Hg版本库到Git
从bitbucket服务器clone一份Hg的版本到本地做示范用,如果你本地已经存在一份需要被转换以及同步的Hg版本库就略过此步骤,只要cd要你的Hg管理的项目目录即可。
$ hg clone https://leeiio@bitbucket.org/leeiio/vim vim-test requesting all changes adding changesets adding manifests adding file changes added 23 changesets with 418 changes to 239 files updating to branch default 239 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd vim-test/ |
创建一个bookmark,然后push到Git服务器
$ hg bookmark -r default master $ hg push git+ssh://git@github.com:Leeiio/vim-test.git pushing to git+ssh://git@github.com:Leeiio/vim-test.git importing Hg objects into Git creating and sending data git::refs/heads/master => GIT:092e7cf3 |
如果你想从Git服务器上pull最近的更新的话也可以直接是用Hg的pull命令
$ hg pull git+ssh://git@github.com:Leeiio/vim-test.git pulling from git+ssh://git@github.com:Leeiio/vim-test.git importing Hg objects into Git Total 0 (delta 0), reused 0 (delta 0) importing Git objects into Hg (run 'hg update' to get a working copy) |
是不是超级简单且强大的一个玩意?如果你也有这样的需求,那么就下载Hg-Git试试吧!
华丽的沙发!
博主您好,请问可否交换下友情链接呢
@小天 不交换
🙄 纯飘过,只熟练于svn,惭愧!
呃。。。完全不懂是什么。。。惭愧。。。
说的很对,我很赞同
好东西不早分享。。。git用得不习惯。。。 🙁
@丸子 现在也不晚么…
果断去试试嘛~~~
我那个脑残公司还在用VSS 2005 = =..最近特别开会强调, 要加强开发管理, 养成每日使用VSS check in/ checkou习惯. 对此除了无语我真的无话可说.
PS: 试用了Git.. 决定还是继续用svn管理自己的源码库, 分布式版本控制系统离开多人并行开发和源码合并就毫无意义.
@小野大神 恩,一个人的话确实svn还是比较适合的,并且有google code可以托管代码,但是用git的话因为有github这个强大的托管网站,所以还是不错的。
@小野大神 用source safe就是脑残公司了?你这种想法才是比较脑残的。source safe非常适合所有开发者都位于同一个局域网上,而且彼此间的物理距离很近的情况,我敢说,你那脑残公司绝对属于这种情况。
写得不错
.. 太高端了 ~
我还在纠结于在ubuntuServer里面安装gd-2.0.35.tar.gz ~
先解压,然后./configure –prefix=/usr/local/gd2 ~
然后make,接着就木有了 ~
root@LinuxSrv:/home/evlos/bags/gd-2.0.35# make
cd . && /bin/bash /home/evlos/bags/gd-2.0.35/config/missing –run autoconf
FATAL ERROR: Autoconf version 2.54 or higher is required for this script
make: *** [configure] Error 1
刚才configure都进行到了config.status: executing depfiles commands ~
哎,杯具,你知道怎么回事不? 😳 😳 😳
@小邪
@Leeiio 哇,太详细了,感动ing ~ 😥 😥 😥 😳 😀
多谢,成功鸟 ~
@小邪 客气客气,举手之劳。
看不懂。。惭愧
这里还是那个乱。但是很有序。哈哈哈。我要开始钻研wp了。得给公司弄个网站。
更新了关注下
我比较喜欢Git 🙂
学习了
我什么都看不到。。。。
不错。哥哥飘过..
预祝博主国庆快乐,合家美满!
打酱油路过
惊,看看美女是怎么造出来的http://www.1688lx.com给你揭秘
桂林桂花园,专业的桂花树基地。
😆 Pia!(o ‵-′)ノ”(ノ_<。) 还不更新
冷空气袭来,大家注意保暖了。现在,看一个感冒可贵了!!!
说得很好,又学到新知识了,谢谢。。。。
来这里耍耍,学习下博客的操作技巧,博主不要介意。
你们都是大神啊.什么都懂啊.
hg看起来确实比git更加容易上手,而且扩展,文档之类挺多的
另外,watch了lz的vim配置,正在研习中
没有讲到push的前提是需要git方面的设置。如果加上这个步骤文章就更加全面了。
Pingback: 大蕉 » Hg代码管理转换Git代码管理-方便xcode使用Git
支持HG!