Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 查找在提交之间发生更改的目录_Git_Jenkins_Subdirectory_Git Diff - Fatal编程技术网

Git 查找在提交之间发生更改的目录

Git 查找在提交之间发生更改的目录,git,jenkins,subdirectory,git-diff,Git,Jenkins,Subdirectory,Git Diff,我正在设置一个jenkins作业,它迭代项目中的目录,并在每个目录中执行类似的操作 然而,就目前而言,由于我有一小部分目录,检查所有目录并不是什么大问题。但是我只想迭代那些在GIT\u-PREVIOUS\u-COMMIT和GIT\u-COMMIT之间进行了更改的目录 我目前的工作是: 中的目录的*/ 做 cd$dir #测试脚本是否存在 #执行脚本 #将result.zip上载到S3存储桶 光盘 完成 您可以与--仅名称选项一起使用。这将列出已更改的文件: $ git diff --name-o

我正在设置一个jenkins作业,它迭代项目中的目录,并在每个目录中执行类似的操作

然而,就目前而言,由于我有一小部分目录,检查所有目录并不是什么大问题。但是我只想迭代那些在
GIT\u-PREVIOUS\u-COMMIT
GIT\u-COMMIT
之间进行了更改的目录

我目前的工作是:

中的目录的
*/
做
cd$dir
#测试脚本是否存在
#执行脚本
#将result.zip上载到S3存储桶
光盘
完成
您可以与
--仅名称
选项一起使用。这将列出已更改的文件:

$ git diff --name-only GIT_COMMIT..GIT_PREVIOUS_COMMIT

app/controllers/some_controller.rb
app/models/some_model.rb
app/views/some/show.html.erb
app/views/some/index.html.erb
然后,您可以通过管道将其传输到sed以删除文件名。然后排序&uniq以获得您感兴趣的目录的唯一列表:

sed 's,/*[^/]\+/*$,,' | sort | uniq 

app/controllers
app/models
app/views/some

您可以为此类活动添加自己的别名。它很方便

在.gitconfig中添加以下内容:

  38   # Difference between HEAD and HEAD^
  39   dbh = "!git ls --numstat -1"
  40   # Difference between two commits
  41   dbc  = "!f() { git diff --name-status $1 $2; }; f"
然后您可以将它们用作:

 git dbc ab68a12 fc83334 # for diff between two commits.


我使用
cut
,做了一点小小的改变,这样做会更好
git diff--name only${git_COMMIT}..${git_PREVIOUS_COMMIT}cut'/'-f1 | sort | uniq
Ls是另一个别名,我必须以相当的格式显示日志。您可以简单地用log--decoration--date=relative替换ls
git dbh # for diff between previous and current HEAD.