以下是我们遇到的问题:在SVN中,你怎么知道哪个分支被修改过?
开发人员将在他的沙箱中检出外线。我们创建了一个切换脚本来将某些文件切换到正在进行更改的分支。有时切换脚本似乎失败,开发人员检查他的更改。这些更改显示在修订日志中,但我们无法弄清楚他们是否签入了分支或主干。他们似乎迷失在开发者的盒子里。这会导致大量的来回切换,并且通常只需稍作修改即可重新编码。
所以我的问题是,我们怎么能告诉哪个分支修订被检入?
以下是我们遇到的问题:在SVN中,你怎么知道哪个分支被修改过?
开发人员将在他的沙箱中检出外线。我们创建了一个切换脚本来将某些文件切换到正在进行更改的分支。有时切换脚本似乎失败,开发人员检查他的更改。这些更改显示在修订日志中,但我们无法弄清楚他们是否签入了分支或主干。他们似乎迷失在开发者的盒子里。这会导致大量的来回切换,并且通常只需稍作修改即可重新编码。
所以我的问题是,我们怎么能告诉哪个分支修订被检入?
如果不使用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
------------------------------------------------------------------------
使用乌龟,我拉起了我修改程序的日志。
我强调了动作和路径。该路径显示了在哪个分支上完全修改了哪些内容。
谢谢。这很有帮助,但是我的一半开发人员都使用Mac,所以此解决方案对他们无效。 –
修订为每棵树,所以首先你需要获得“变化”的修订
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
不被视为一个分支。
这确实为我提供了我正在查找的信息,但是我无法让它只用于一个文件。 –
@DougNoel SVN提交不是单个文件提交,它们是“整棵树”提交。所以,如果你有一个文件,第一步是确定它在哪个提交上次被修改,这可以由'svn info filename'确定。如果您只想为该文件分支,请为该文件筛选差异信息。你永远不知道,但两个副本_could_已经在两个不同的分支上签入了相同的提交。 –
这解决了我的问题。谢谢。 –