18.5.3 开发者user2工作在发布分支

    开发者user2针对问候时用户名显示不全的Bug进行更改,具体操作过程如下。

    (1)进入开发者user2的工作区,并确保工作在hello-1.x分支中。


    $cd/path/to/user2/workspace/hello-world/ $git checkout hello-1.x

    (2)编辑文件src/main.c,修改代码中的Bug。


    $vi src/main.c

    (3)实际上在hello-world版本库中包含了我的一份修改,可以看看和您的更改是否一致。下面的命令将我对此Bug的修改保存为一个补丁文件。


    $git format-patch jx/v1.1..jx/v1.2 0001-Bugfix-allow-spaces-in-username.patch

    (4)应用我对此Bug的改动补丁[1]

    如果您已经自己完成了修改,可以先执行git stash保存自己的修改进度,然后执行下面的命令应用补丁文件。当应用完补丁后,再执行git stash pop将您的改动合并到工作区。如果我们的改动一致(英雄所见略同),将不会有冲突。


    $patch-p1<0001-Bugfix-allow-spaces-in-username.patch patching file src/main.c

    (5)看看代码的改动吧。


    $git diff diff—git a/src/main.c b/src/main.c index 6ee936f..f0f404b 100644 —-a/src/main.c +++b/src/main.c @@-19,13+19,20@@int usage(int code) int main(int argc,char**argv) { + char**p=NULL; + if(argc==1){ printf("Hello world.\n"); }else if(strcmp(argv[1],"-h")==0|| strcmp(argv[1],"—help")==0){ return usage(0); }else{ -printf("Hi,%s.\n",argv[1]); +p=&argv[1]; +printf("Hi,"); +do{ +printf("%s",*p); +}while(*(++p)); +printf(".\n"); } printf("(version:%s)\n",_VERSION);

    (6)本地测试一下改进后的软件,看看Bug是否已经被改正。如果运行结果能显示出完整的用户名,则Bug成功修正。


    $cd src/ $make version.h.in=>version.h cc-c-o main.o main.c cc-o hello main.o $./hello Jiang Xin Hi,Jiang Xin. (version:v1.0-dirty)

    (7)提交代码。


    $git add-u $git commit-m "Bugfix:allow spaces in username." [hello-1.x e64f3a2]Bugfix:allow spaces in username. 1 files changed,8 insertions(+),1 deletions(-)

    [1]应用由git format-patch生成的补丁文件,最好使用git am命令。这里为简单起见使用GNU patch命令。