2012-08-31 47 views
1

以下是我们遇到的问题:在SVN中,你怎么知道哪个分支被修改过?

开发人员将在他的沙箱中检出外线。我们创建了一个切换脚本来将某些文件切换到正在进行更改的分支。有时切换脚本似乎失败,开发人员检查他的更改。这些更改显示在修订日志中,但我们无法弄清楚他们是否签入了分支或主干。他们似乎迷失在开发者的盒子里。这会导致大量的来回切换,并且通常只需稍作修改即可重新编码。

所以我的问题是,我们怎么能告诉哪个分支修订被检入?

回答

1

如果不使用TortoiseSVN,你可以得到一个详细的svn日志:

svn log --verbose -r HEAD 

这将显示所有文件的提交(就像@Gilbert勒布朗的回答)svn的位置。下面的示例输出。如果您需要不同的东西,请将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 
------------------------------------------------------------------------ 
+0

这解决了我的问题。谢谢。 –

2

使用乌龟,我拉起了我修改程序的日志。

Log messages

我强调了动作和路径。该路径显示了在哪个分支上完全修改了哪些内容。

+0

谢谢。这很有帮助,但是我的一半开发人员都使用Mac,所以此解决方案对他们无效。 –

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/ 

的例子被认为是该项目的“根”的网址,让subracting从

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

告诉我,“分支”这是检查在为

trunk 

注意其他项目进行了检查在

trunk/src/main/java/com 

但这就是不是的一个分支,通过我的约定。由于什么是分支的决定是传统,这最后确定哪些分支受到影响需要知道您的特定SVN设置。在我的情况

branches/branchA 

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

branches/branchA/src 

不被视为一个分支。

+0

这确实为我提供了我正在查找的信息,但是我无法让它只用于一个文件。 –

+1

@DougNoel SVN提交不是单个文件提交,它们是“整棵树”提交。所以,如果你有一个文件,第一步是确定它在哪个提交上次被修改,这可以由'svn info filename'确定。如果您只想为该文件分支,请为该文件筛选差异信息。你永远不知道,但两个副本_could_已经在两个不同的分支上签入了相同的提交。 –

相关问题