1

我正在创建一个脚本,它将拉下最新的主代码分支,并检查是否有任何文件名是 SQL。确定文件名后,我将获取存储过程。目前我有它拉代码并逐行准备输出,但是我的 grep 命令似乎无法找到 sql 文件名。这就是我所拥有的

#!/bin/bash

# Pull all of the latest code for the master branch, and set the commit log to 
# a variable
commit_log=$(git pull origin master --quiet)

#read the commit log line by line
echo $commit_log | while read line
do
    if [ `echo "$line" | grep -E "(\.sql)$"` ]; then
        echo "SQL"
    fi      
    echo "LINE:" $line 
done  

我没有坚持使用 bash,我也可以在 perl 中执行此操作。

4

1 回答 1

4

拉取后,新状态存储在 HEAD 中,旧状态存储在 HEAD@{1} 中。您可以使用git diff --name-only. 一个小的 perl one-liner 似乎是检查文件名的最简单方法:

git pull
git diff --name-only HEAD@{1} | perl -wpe 'print "SQL:" if /\.sql$/'
于 2013-05-16T21:45:35.863 回答