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