美文网首页软件教程
根据提交信息找出repo所有提交生成补丁和源文件

根据提交信息找出repo所有提交生成补丁和源文件

作者: 小磊长江大 | 来源:发表于2017-11-24 14:36 被阅读0次

#!/bin/bash

MSG=$1

if[ 1-gt$#];then

echo"Usage ./find_commit.sh commit_msg"

exit1

fi

LOCAL_DIR=$(pwd)

COMMIT_DIR=$LOCAL_DIR/find_out_${MSG#*\#}

if[-d$COMMIT_DIR];then

rm -rf$COMMIT_DIR

fi

REPOS=$(repo forall -c pwd)

forpathin$REPOS

do

pushd$path>/dev/null

#echo "Searching commits that match "$MSG" in "${path#*$LOCAL_DIR}" ..."

COMMITS=($(git log --pretty=format:"%H"--grep=$MSG))

j=${#COMMITS[@]}

if[$j-gt0 ];then

leti=n=$j-1

k=0

echo-e"Found"$j"commit(s) in"${path#*$LOCAL_DIR\/}

COMMIT_OUT_PATCH=$COMMIT_DIR/patch

if[!-d$COMMIT_OUT_PATCH];then

mkdir -p$COMMIT_OUT_PATCH

fi

while[$i-ge0 ]

do

commit=${COMMITS[$i]}

COMMIT_OUT_SOURCE=$COMMIT_DIR/source_code/${path#*$LOCAL_DIR}/commit_$k

if[!-d$COMMIT_OUT_SOURCE];then

mkdir -p$COMMIT_OUT_SOURCE

fi

PATCH_NAME_TMP=${path#*$LOCAL_DIR/}

PATCH_NAME=${PATCH_NAME_TMP//\//_}_$k.patch

if[$i-eq$n];then

echo$PATCH_NAME_TMP:>>$COMMIT_DIR/commits.txt

fi

echo-e'\t'$commit>>$COMMIT_DIR/commits.txt

if[$k-eq$n];then

#echo -e '\n'

echo-e'\n'>>$COMMIT_DIR/commits.txt

fi

#echo "Generating "$[k+1]"th commit in "${path#*$LOCAL_DIR\/}

mv$(git format-patch -1$commit--no-commit-id)$COMMIT_OUT_PATCH/$PATCH_NAME

FILES=$(git diff-tree -r --no-commit-id --name-only$commit)

#echo "Copying source file in "${path#*$LOCAL_DIR\/}

forfilein$FILES

do

#echo "cp "${file#*$path}" "${COMMIT_OUT_SOURCE#*$LOCAL_DIR\/}

cp --parents$file$COMMIT_OUT_SOURCE

done

leti--

letk++

done

#else

#echo "No related commit found in "${path#*$LOCAL_DIR}" !"

fi

popd>/dev/null

done

if[-f$COMMIT_DIR/commits.txt ];then

echo-e"\n"

echo"All patch and source code generated in dictory"${COMMIT_DIR#*$LOCAL_DIR\/}

else

echo"No commit found that match commit_msg:"$MSG

fi

相关文章

  • 根据提交信息找出repo所有提交生成补丁和源文件

    #!/bin/bash MSG=$1 if[ 1-gt$#];then echo"Usage ./find_com...

  • Git 常用指令表

    创建版本库 修改和提交 查看提交历史 撤消 分支与标签 合并与衍合 远程操作 补丁

  • git 查看历史

    Git 查看提交历史 一、查看所有历史 git log 二、显示每次提交所引入的差异(按补丁的格式输出)。 你也可...

  • iOS之制作cocopods私有库并发布

    一.创建私有库 二. 提交到 GitHub 三. 提交到Spec Repo仓库

  • git 同步代码

    问题场景: 新公司要求所有的代码提交都要先通过自己的库提交到主repo上去,所以先在gitlab网页上fork出一...

  • Git常用命令

    生成patch补丁包,把最近的一个提交打成patchgit format-patch -n HEAD 先检查pat...

  • Git提交规范:commitlint + husky

    提交代码的时候,能够根据自定义的提交信息、代码规范进行自动校验,避免多人协作开发时提交代码信息不准确或者代码格式的...

  • git规范

    目标 参考 生成 CHANGELOG.md识别不重要的提交在浏览 Git 历史时提供更多信息格式化提交信息恢复(R...

  • git多秘钥共存

    生成公钥 以gitlab为示例 创建配置文件 针对每个域名做配置 提交信息 配置每个项目的单独提交信息 需要到项目...

  • HTML5之表单验证

    前台提交信息到后台,一般用form表单提交,也可以用ajax提交信息到后台(提交信息一般不用cookie和sess...

网友评论

    本文标题:根据提交信息找出repo所有提交生成补丁和源文件

    本文链接:https://www.haomeiwen.com/subject/naseuxtx.html