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命令。