写出来的都是shit,快关闭!

写一个git的增量包脚本

事情是这样子的,昨天下午6点钟左右,班群有童鞋求助

童鞋a:有大神在么。有个问题困扰很久,找不到办法。

童鞋a:git 怎么抽增量补丁包。

童鞋a:svn 可以全部选中文件右键 export 搞定。两秒钟。。。

童鞋a:smartgit 这工具没这功能。 有人知道 哪个工具或者什么git 命令能做到么

童鞋a:google baidu 都找过。。。就是这么low 找不到。。

大神

没!错!

这!绝!壁!是!在!召!唤!我!

能力越大,责任越大!

这句老掉牙的台词!却正是我一生的写照!

这个忙,本渣帮定了!

然后在群里手把手教童鞋写(zhuang)代(bi)码!

当然,妥妥解决了问题!


班群聊天内容精选:

测试结果:


废话不多说了

Show You All… The Code!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/sh

#本脚本在 Mac OS X El Capitan 测试成功

project_path=
patch_path=

export_project(){
  #把主函数参数传进来
  des_project_path=$1
  des_patch_path=$2
  #定义增删改的文件夹
  patch_path_folder=
  #定义一个临时文件,存放增删改的文件列表
  tmpfile=../patch.log
  git status --porcelain | awk -F " " '{print $2}' > $tmpfile
  #定义行数,不定义也行,我是用来核对自己有木有写错
  LINE_NUM=1
  #循环开始:遍历增删改文件列表
  while read filepath
  do
      printf " %d.filepath:  $filepath" $LINE_NUM
      LINE_NUM=$((LINE_NUM + 1))
      #判断文件是否存在
      if [ ! -e "$filepath" ]
      then
      #不在
      printf "\n\e[31m ------it is deleted!------\e[0m \n"
      else
          #在的话,就赋值到刚才定义的增删改的文件夹
          patch_path_folder="$des_patch_path"/"$(dirname $filepath)"
          printf "\n\e[32m copy to:    $patch_path_folder\e[0m \n"
          #强制复制文件夹
          mkdir -p $patch_path_folder
          #复制文件到文件夹里面
          cp -Rf $filepath $patch_path_folder
      fi
  done < $tmpfile
  #循环结束
  #删除临时文件
  rm $tmpfile
  #返回项目根目录
  cd $des_project_path
}

main(){
  #在项目根目录运行本脚本,赋值路径到 project_path
  project_path=$(pwd)
  #创建跟项目根目录同级别的 patch 文件夹
  mkdir ../patch
  #进入 patch 文件夹
  cd ../patch
  #赋值路径到 patch_path
  patch_path=$(pwd)
  #回到项目根目录
  cd -

  echo "project_path:   $project_path"
  echo "============================"

  #执行抽取函数
  export_project $project_path $patch_path

  echo "============================"
  tree $patch_path
  echo "============================"
  echo "patch_path: $patch_path"
}

main

我习惯把自己写的脚本放到 ~/bin/ 里面

然后在shell的配置文件中

export PATH=/Users/xxx/bin:$PATH