• TortoiseHg 学习笔记


    0.前言
        TortoiseHg是分布式的源代码管理工具Mercurial的GUIclient。 mercurial 作为3大主流的分布式源代码管理工具。已经被广泛的使用。比如 googlecode.com和codeplex.com都支持mercurial作为源代码管理工具。

    以下结合某个场景。叙述TortoiseHg的详细用法。


    1.假想场景
    【1】主管在版本号库server中建立一个仓库。该server的IP地址为192.168.1.102,版本号库server的port为8000(默认)。
    在版本号库中仅仅有一个main.c文件,main.c文件的内容例如以下
    #include <stdio.h>
    int main(void) {
        printf("Hg Test
    ");
    }

    【2】A男和B男分别clone版本号库
    【3】A男试图在main.c中min函数。B男试图在版本号库中加入max函数。

    两人同一时候開始改动。

    【4】B男似乎速度快一点。添加了max函数并提交。
    【5】A男也完毕了max函数。拉取版本号库之后发现B男已经提交了一个版本号,A男发现两个版本号存在冲突。
    【6】A男和B男相互沟通。决定同一时候保留min函数和max函数。
    【7】A男使用合并工具完毕合并并提交至server。
    【8】B男拉取server内容,并进行更新。

    最后A男和B男本地版本号库中的内容全然同样。main.c中的内容变为
    #include <stdio.h>
    int min(int a, int b) {
        return a < b ?

    a : b; } int max(int a, int b) { return a > b ?

    a : b; } int main(void) { printf("Hg Test "); }



    【基本概念介绍】
    【Init】 初始化,创建一个空的仓库。

    【Clone】 复制仓库,来源能够是一个http或ssh链接表示的仓库。也能够是本地仓库。

    【Commit】 提交,即接受全部的改动将当前版本号作为最新版本号(也叫tip)。仅仅提交的本地仓库。并且本地仓库会详细记录全部的变动(称为变更集或改动集)。

    多次提交并不会影响远程仓库。

    【Revert】恢复,即撤销全部的改动,恢复到未更改的状态。
    【Pull】拉取。将雅远程仓库有而当前仓库没有的变更集“下载”到本地仓库。只是这仅仅是加入了变更集本地文件并不会改动
    【Update】更新,当获取了其它变更集,更改以保持和远程仓库一致
    【Push】推送,将当前仓库的变更集“上传”到其它仓库去。
    【Merge合并。当一个文件同一时候被多次改动。并存放在多个仓库时,要获得一个统一的版本号就须要合并。

    2.server搭建
    【若干准备】
    创建一个名为main.c的函数,文件内容例如以下
    #include <stdio.h>
    int main(void) {
        printf("Hg Test ");
    }
    【建立仓库】
    在该文件所在目录。右击选择tortoiseHg -> create respository here(或在Hg workbench中操作)建立本地仓库。请注意首次创建的仓库为一个空仓库。可进行必要的提交工作。


    图2.1 建立本地仓库


    图2.2 建立本地仓库

    【首次提交】
    进行提交操作时,须要首先选中最新版本号。接着选择须要跟踪文件,然后编写必要的改动说明,最后点击提交button。请注意提交操作仅仅提交到本地仓库。若要使远程仓库产生变化须要进行下一步推送操作。(因为此处为server并没有推送目标。全部没有推送操作。可是相对于下文提到的A男和B男情况就不一样了。)

    图2.3 首次提交


    图2.4 提交之后结果

    【改动server设置】
    选择server选项,改动全局參数和该仓库參数。当中取消SSL加密推送,并同意他人推送

    为了简单说明问题。全局參数和该仓库设置同样。

    在该项设置中默认的port号位8000,也能够使用其它port号,请一定要避免知名port号。


    图2.5 改动全局设置


    图2.6 改动本地仓库设置

    【启动server】
    在tortoiseHg中选择【仓库】->【web server】

    图2.7 启动webserver

    3.B男操作过程
    【过程概述】——clone远程仓库至本地->改动源代码->本地提交Commit->拉取远程代码pull->合并merge或更新update->推送到远程仓库push

    【clone过程】
        新建一个空目录(必须为空目录)。在空文件里右击,选择TortoiseHg->Clone。源地址中输入远程仓库URL,比如远程仓库server的IP地址为192.168.1.102,Hg仓库的port号为8000。那么远程仓库的URL可写为:
        http://192.168.1.102:8000/

    图3.1 clone操作
    【改动代码】
        改动源代码,添加一个max函数,改动之后的main文件例如以下所看到的。
    #include <stdio.h>
    int max(int a, int b) {
        return a > b ? a : b;
    }
    int main(void) {
        printf("Hg Test
    ");
    }

    【本地提交】
        在界面的右下角可看到代码的变化情况,+号代表添加。

    图3.2 本地提交

    【拉取操作】
        因为A男没有提交代码到远程仓库,全部此时B男拉取时提示没有不论什么更新内容。
    【推送操作】
        B男运行推送操作。那么远程仓库发生了变化。(此时A男也有可能在编写代码,可是他并没有完毕代码本地提交和推送操作,那么A男拉取时之后。须要和他本地的代码进行合并。然后再进行推送操作。尽管此处B男的拉取和推送操作非常easy,可是没有不论什么代表性,请关注下文A男的操作)

    图3.3 拉取并推送到远程仓库

    【必要的检查】
        通过网页查看推送是否成功,请输入远程仓库URL 192.168.1.102:8000。

    图3.4 必要的检查

    4.A男操作过程
    【本地克隆】
        和B均操作同样
    【改动代码】
        添加min函数。
    #include <stdio.h>
    int min(int a, int b) {
        return a < b ?

    a : b; } int main(void) { printf("Hg Test "); }


    【本地提交】

    图4.1本地提交
    【拉取操作】
        A男发现B男已经提交了一个版本号。须要进行代码合并。


    图4.2 拉取操作

    【合并操作】
        合并操作可借助合并工具,可是在合并之前还是和同事沟通一下。合并一般发生在两个人同一时候改动了同一个文件。


    图4.3 合并操作

        同一个文件里在两个分支中出现改动。已经无法自己主动合并须要进行下一步手动合并。

    图4.4 合并操作

        选择合并工具并開始合并。TortoiseHg会加入在系统中安装的合并工具,比如Bcompare或者winmerge。

    在界面中选择Tool Resolve使用工具解决合并,Take Local选择本地文件。Take Other选择远程文件(相当于放弃了本地改动)。建议选择使用工具合并同一时候和您的同一时候好好沟通一下,怎样合并。


    图4.5 合并操作

        使用合并工具时,左側为远程内容,右側为本地内容。尽管合并工具提示仅存在非常小的差异,比如min和max,<和>。可是假设有效沟通一下的话便会发送实际上应该添加一个函数。须要把max函数拷贝到本地已完毕合并。

    图4.6 使用工具完毕合并

        合并完毕。编写必要的改动说明。


    图4.7 提交必要的合并说明

    【推送操作】

    图4.8 推送操作

    【检查结果】

    图4.9 必要的检查

    5.B男再次操作
    【拉取操作】
        此时B男发现远程server存在变更,须要进行合并或更新。

    图5.1 拉取操作

    【更新操作】
        此时B男仅仅须要进行更新操作就可以,及时进行合并操作Hg也会提示没有不论什么能够合并的内容。此时B男仅仅须要通过更新update和server保持一致就可以。【小技巧,可优先进行合并操作,若提示没有任务合并内容便使用更新操作】

    图5.2 更新操作
        最后A男和B男的本地仓库中,main.c的内容全然同样。

    6.ubuntu中使用
    【1】安装过程
        依次输入以下指令:
    sudo add-apt-repository ppa:tortoisehg-ppa/releases
    sudo add-apt-repository ppa:mercurial-ppa/releases
    sudo apt-get update
    sudo apt-get install mercurial python-nautilus tortoisehg
    【2】使用界面
        使用界面和windows同样,仅缺少右键快捷菜单。

    图6.1 ubuntu中TortoiseHg界面

    7.參考资料




  • 相关阅读:
    把J2ME JAVA 手機軟體轉成EXE檔的工具 [小糊涂的灵感]
    java game 小尺寸设计 [小糊涂的灵感]
    手机游戏开发综述(转载)[小糊涂的灵感]
    (Nokia开发包安装的过程)[小糊涂的灵感]
    Bobber Tec授权3D游戏开发引擎了。[小糊涂的灵感]
    Game features List Template:[小糊涂的灵感]
    GameCanvas快速开发吧.[小糊涂的灵感]
    手机flash技术的初步介绍,(上次飞思的来北京聊了一下)[小糊涂的灵感]
    五子棋判断输赢的算法描述.[小糊涂的灵感]
    NRF51822之GPIOTE使用
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10754670.html
Copyright © 2020-2023  润新知