Subversion:如何找到两个标签之间的差异?

时间:2010-07-17 04:59:09

标签: svn diff

我知道两个标签之间的差异列出了通过以下方法在这两个标签之间进行了更改的“文件”。

svn diff tag1 tag2 |grep Index:

Subversion或某些技术中是否有任何属性可以找出导致这些文件发生变化的修订号(即文件的tag1版本与同一文件的tag2版本之间的差异)?

THX 范达娜

6 个答案:

答案 0 :(得分:13)

您可以先找到标签的修订版本:

svn info http://svn.twig-project.org/tags/RELEASE_0_9_7 | grep 'Last Changed Rev'
Last Changed Rev: 331

svn info http://svn.twig-project.org/tags/RELEASE_0_9_8 | grep 'Last Changed Rev'
Last Changed Rev: 343

你不是在寻找差异,你正在寻找一个日志。因此,在这些修订之间进行冗长的日志,您将获得包括已更改文件的提交。

svn log -v -q -r 331:343 http://svn.twig-project.org/trunk

------------------------------------------------------------------------
r332 | fabien | 2010-06-12 18:30:02 +0200 (Sat, 12 Jun 2010)
Changed paths:
   M /trunk/CHANGELOG
   M /trunk/lib/Twig/Environment.php
------------------------------------------------------------------------
r333 | fabien | 2010-06-12 18:45:04 +0200 (Sat, 12 Jun 2010)
Changed paths:
   M /trunk/CHANGELOG
   M /trunk/lib/Twig/Environment.php

答案 1 :(得分:2)

如果您想知道在两个标签之间更改了哪些文件,请使用工作副本:

svn merge --dry-run URL_TAG_1 URL_TAG_2

答案 2 :(得分:2)

如果您想要一个可以从一个标签合并到另一个标签的修订列表,您可以使用以下代码生成它:

    svn mergeinfo --show-revs eligible URL_TAG_1 URL_TAG_2

答案 3 :(得分:2)

以下shell脚本采用SOURCE和DEST,并在SOURCE中显示尚未合并到DEST中的更改集。

所以,回答原来的问题:

svnincoming ^/tags/TAG1 ^/tags/TAG2

或者查看尚未合并到工作副本分支的主干中的更改:

cd /working/copy/
svnincoming ^/trunk

svnincoming脚本:

#!/bin/sh -e

SOURCE="$1"
DEST="${2:-.}"

if [ "$SOURCE" = "" ]; then
    echo "Usage: `basename $0` SOURCE[@REV] [DEST[@REV]]"
    echo "List revisions eligible for merging from SOURCE to DEST (or '.', if omitted)."
    exit 1
fi

svn mergeinfo --show-revs eligible "$SOURCE" "$DEST" | sed 's/^/-/' | xargs -d '\n' svn log "$SOURCE"

答案 4 :(得分:2)

自SVN version 1.9以来--logsvn mergeinfo选项:

svn mergeinfo --log --show-revs eligible SOURCE TARGET

答案 5 :(得分:1)

在svn 1.9.7版中,尽管我的标签不在同一个分支中,但它可以正常工作!

svn diff --old=URL_TAG_1 --new=URL_TAG_2