在SVN中,如何判断修订的哪个分支?

时间:2012-08-31 17:55:23

标签: svn

以下是我们遇到的问题:

开发人员将在他的沙箱中检出主干。我们创建了一个切换脚本,用于将某些文件切换到正在进行更改的分支。有时交换机脚本似乎失败,开发人员检查他的更改。这些更改显示在修订日志中,但我们无法确定它们是否已检入分支或主干。他们似乎迷失在开发者的盒子里。这会导致大量的来回切换,并且通常当它发生很小的变化时,它只会被重新编码。

所以我的问题是,我们如何判断修订的分支是什么?

3 个答案:

答案 0 :(得分:2)

使用Tortoise,我提取了一个我修改过的程序的日志。

Log messages

我强调了行动和路径。该路径向我显示了在哪个分支上修改了什么。

答案 1 :(得分:1)

如果您没有使用TortoiseSVN,您可以获得详细的svn日志:

svn log --verbose -r HEAD

这将显示提交中所有文件的svn位置(就像@Gilbert Le Blanc的回答一样)。示例输出如下。如果您需要不同的内容,请将HEAD更改为特定版本。

------------------------------------------------------------------------
r556 | USER | 2012-08-30 13:37:35 -0500 (Thu, 30 Aug 2012) | 1 line
Changed paths:
   M /trunk/Path/File.cs

Commit Comment
------------------------------------------------------------------------

答案 2 :(得分:1)

修订是按树进行的,因此首先需要获取修订版的“更改”

svn diff -r <start revision>:<end revision> --summarize <root svn URL>

可能产生输出,如

A       file:///home/xxx/svn/yyy/trunk/src/main/java/com/proj/App.java
A       file:///home/xxx/svn/yyy/trunk/src/main/java/com/proj
A       file:///home/xxx/svn/yyy/trunk/src/main/java/com
A       file:///home/xx/svn/yyy/trunk/src/main/java
A       file:///home/xxx/svn/yyy/trunk/src/main
A       file:///home/xxx/svn/yyy/trunk/src
A       file:///home/xxx/svn/yyy/trunk/pom.xml
 M      file:///home/xxx/svn/yyy/trunk

分支在SVN中实现为目录,因此您需要确定项目的根目录,以及考虑哪些直接子目录(按照惯例)“分支”

在上面的例子中

file:///home/xxx/svn/yyy/

被认为是项目的“根”网址,因此从

中减去
file:///home/xxx/svn/yyy/trunk

告诉我,检查过的“分支”是

trunk

请注意,其他项目已在

中签入
trunk/src/main/java/com

我的约定 分支 由于什么是分支的决定是传统的,最后确定哪些分支受到影响将需要了解您的特定SVN设置。在我的情况下

branches/branchA

被我自己认为是一个分支(对于我的项目),但是

branches/branchA/src

不被视为分支。