如何在特定目录中的标签之间列出添加的文件?

时间:2013-12-07 01:32:43

标签: git

我不知道从哪里开始,所以我还没有尝试过任何东西。基本上我想让所有标签(版本号)从最新到最旧排序,并生成一个特定目录中从一个标签到下一个标签的添加文件列表。这些文件本身就是小的降价代码片段,我想把它们全部放在一个文件中,每个标签都有一个标题。

1 个答案:

答案 0 :(得分:2)

git tag列出了所有标签,但未列入"版本顺序&#34 ;;你必须做你的"版本号排序"另一种方式。这可以是任意的困难,因为营销和销售人员喜欢确保没有人能够理解哪个版本是哪个,以便迫使客户购买更多版本。 : - )

假设您有一个列表,您可以逐步完成,例如:

versions="v0.01 v0.02 v1 v1.1alpha v1.1 v1.1a v3 \
   vmarketing-name vdifferent-name \
   v2.1-because-marketing-thinks-2-greater-than-3"

然后你可以做这样的事情(在sh / bash中):

set -- $versions
prev=$1
shift
for tag in $versions; do
    echo "$prev => $tag"
    git diff $prev $tag --diff-filter=A --name-only -- this/dir
    echo "----------------------------------"
done

这是如何运作的:

  • git diff为您提供从一次提交到另一次提交的更改。
  • 要比较的提交是"之前的标记" $prev和"此标记" $tag
  • 我们告诉git diff仅查看路径this/dir
  • 我们告诉git diff过滤除A dded-files
  • 以外的更改
  • 我们告诉git diff仅打印文件名

(然后,如果变化很大或为空,则echo会添加一条切割线。)