
突击Mercurial SCM(HG)
HG的特点是易用功能强大,在众多源代码工具中渐渐崭露头脚。本专栏用于记录博主在团队开发中对HG的经验积累。
程序员Linc
资深技术专家,专注移动开发与人工智能领域15年+
展开
-
突击Mercurial SCM(HG)13---回退到指定版本
团队开发中,版本回退是老生常谈了。通常版本回退的原因是代码中出现重大错误了,要回退到上一个可运行的版本。 这是一个很危险的动作,而我们使用revert命令来做这个危险动作。$ hg revert --helphg revert [OPTION]... [-r REV] [NAME]...restore files to their checkout state Note: T原创 2016-01-29 15:29:52 · 7404 阅读 · 1 评论 -
突击Mercurial SCM(HG)12---解决repository is unrelated的问题
情景再现我在服务器上init一个项目ProjectA,无内容。 我在PC1上clone此项目,加入源代码文件commit后,push出错。 我想在PC2上调式错误,就又clone了此项目,而后新增一个文件。 一会儿push问题解决了,我也将PC2上的文件push到服务器上。接下来,我在PC1上pull代码,出现如下提示:$ hg pullpulling from http://localho原创 2015-11-03 15:37:39 · 2758 阅读 · 0 评论 -
突击Mercurial SCM(HG)11---自搭Server后push遇到的问题
时隔半年后接着突击Mercurial SCM(HG)5—Ubuntu下apache+mod_wsgi搭建hg server讲述提交代码时遇到的问题。1.ssl问题$ hg pushpushing to http://localhost/repos/welcomePlayersearching for changesabort: HTTP Error 403: ssl required因为我们原创 2015-08-28 09:58:31 · 2888 阅读 · 0 评论 -
突击Mercurial SCM(HG)10---配置管理一个新项目
新起一个项目,要从服务端做起。我是用docker搭建的hg server,我的repos目录在~/hg-repos/repos下,那么我可以去此目录init一个项目,然后其他端就可以clone下来。问题是我在此目录做 hg init 操作需要root权限,如下:$ sudo hg init linctest$ lldrwxr-xr-x 3 root root 4096 3月 2原创 2015-03-26 18:06:05 · 2371 阅读 · 0 评论 -
突击Mercurial SCM(HG)9---hgignore
项目中有些文件是不想或不应该被托管的,比如Android项目中bin下和gen的文件。.hgignore文件就是为此而生,如果你的项目路径下无此文件,说明此时还没有人来创建它,那就由你去手动添加吧。语法.hgignore的内容不是随便写的,它遵循一定的语法格式。目前有两种语法格式:regexp Regular expression, Python/Perl syntax. 正则表达式,pyt原创 2015-02-16 15:32:16 · 4242 阅读 · 0 评论 -
突击Mercurial SCM(HG)8---hg server 用户认证
结合对docker搭建的hg server进行验证,用户认证其实很简单。请先参考《Docker实践2:用Docker搭建hg-server 》对docker搭建的hg server有个了解。对于我们自己用apache+hgweb搭建的server也适用,不过我没有亲自验证。将容器上的/var/hg 挂到主机上的/hg-repos,里面的两个配置文件hgusers和 hgweb.config可以在主原创 2015-02-15 14:59:36 · 2941 阅读 · 0 评论 -
突击Mercurial SCM(HG)7---not trusting file /opt/tortoisehg/.hg/hgrc
有时候我们不同的项目需要用不同的身份获取和提交代码。为了应对这个需要,我们可以在每个项目的.hg目录下创建一个hgrc文件去配置不同的用户名,比如:[ui]username = linc但刚刚遇到一个问题,在项目路径启动thg,报一个错误:$ thg$ not trusting file /opt/tortoisehg/.hg/hgrc from untrusted user root, g原创 2015-02-02 18:09:18 · 2738 阅读 · 0 评论 -
突击Mercurial SCM(HG)6---图形化工具TortoiseHg
不得不说,在看提交记录时还是看图形化界面来的方便。用git有gitk,那么hg有什么呢?那就是今天的主题thg。Tortoise系列在源代码管理圈子中小有名气,TortoiseHg也是一样,开源,易用。安装在Windows下自不必说,在Ubuntu上有时还是让人困惑的。官方不推荐直接apt-get install,因为Ubuntu自带的软件源版本会很低,推荐两种方式安装:原创 2015-01-30 17:29:19 · 3477 阅读 · 0 评论 -
突击Mercurial SCM(HG)5---Ubuntu下apache+mod_wsgi搭建hg server
在《Publishing Mercurial Repositories》这篇文章中介绍了很多种将我们自己的hg代码库发布/公开的办法。其中最轻量型的办法是使用hg自带的web server发布,只需要在代码库目录下执行命令hg serve就搞定。但是这只是一个临时的方案,如果想要更健壮更安全,官网还是建议使用hgweb脚本+Web server(apache,IIS等)的方式。查看资料后,我权衡利弊,准备以《Serving Mercurial repositories with Apache and m原创 2015-01-22 20:21:52 · 3525 阅读 · 1 评论 -
突击Mercurial SCM(HG)4---Merge
Scenario:当自己修改完代码,准备commit之前做了一次pull+update,做了些解决冲突工作,然后验证代码是否正常工作。确认一切正常后,执行hg commit,然后执行hg push。但是网络出现问题,push失败。等到网络恢复正常后,发现自己的版本已经不是最新版了,push继续失败。提示:abort: push creates new remote head 8f1da767f59原创 2014-12-17 19:05:21 · 9170 阅读 · 0 评论 -
突击Mercurial SCM(HG)3---撤销操作
1.撤销add 有时候我们用hg add 没加参数,直接把所以没有纳入版本库的文件都添加进来了。而有些文件我们不是想添加的,怎么办?因为我们是add进来,第一个想到的命令是remove。我们执行一下,hg会给我们如下提示:file has been marked for add (use forget to undo)对,它推荐使用forget命令。这时forget命令就派上用场了。hg forg原创 2014-11-20 16:48:49 · 6907 阅读 · 1 评论 -
突击Mercurial SCM(HG)2---当前状态
当我们clone下来代码后,默认会在某个default分支上。hg clone your-src-url代码库克隆下来后,查看一下当前代码库的状态14:30linc@Linc-Ubuntu:Demo$ hg summaryparent: 2014:xxxxxxxxxxxxxxxThis is a description.branch: defaultcommit: 3 unknown (c原创 2014-11-18 18:15:36 · 2794 阅读 · 0 评论 -
突击Mercurial SCM(HG)
这个叫水银的源码管理工具虽然默默无闻,但还是得到了很多团队的使用。为了迎合某些团队的需要,我们也要用它来管理我们的代码。今天的任务是先突击学习,磨刀不误砍柴工。对工具的掌握越快,工作的效率就会越高。1.安装首先从官网下载最新的版本,我这次做个实验,下载了3.2-rc。解压到你指定的目录下:[linc@localhost mercurial]$ lsmercurial-3.2-rc.tar.gz原创 2014-10-27 21:29:12 · 4447 阅读 · 2 评论