1

这是我们遇到的问题:

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

所以我的问题是,我们如何才能知道修订被签入了哪个分支?

4

3 回答 3

2

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

记录消息

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

于 2012-08-31T19:09:47.367 回答
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
------------------------------------------------------------------------
于 2012-08-31T19:16:01.670 回答
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/

被认为是项目的“根”url,所以从

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

告诉我它签入的“分支”是

trunk

请注意,其他项目已签入

trunk/src/main/java/com

但按照我的惯例,这不是一个分支。由于决定什么是分支是传统的,因此最后确定哪些分支受到影响将需要了解您的特定 SVN 设置。就我而言

branches/branchA

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

branches/branchA/src

不被视为分支。

于 2012-08-31T19:38:46.253 回答