Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SVN中,如何判断修订签入了哪个分支?_Svn - Fatal编程技术网

在SVN中,如何判断修订签入了哪个分支?

在SVN中,如何判断修订签入了哪个分支?,svn,Svn,以下是我们面临的问题: 开发人员将在他的沙箱中检查主干。我们创建了一个切换脚本,用于将某些文件切换到正在进行更改的分支。有时,切换脚本似乎失败了,开发人员会在中检查他的更改。这些更改显示在修订日志中,但我们无法确定它们是否已签入分支或主干。他们似乎迷失在开发者的盒子里。这会导致大量的来回切换,通常当它是一个小的变化,它只是被重新编码 所以我的问题是,我们怎样才能知道一个修订被签入了哪个分支?我用乌龟拉了一个我修改过的程序的日志 我强调了行动和路径。路径准确地显示了修改的内容,在哪个分支上。使用

以下是我们面临的问题:

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


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

我用乌龟拉了一个我修改过的程序的日志


我强调了行动和路径。路径准确地显示了修改的内容,在哪个分支上。

使用乌龟,我调出了一个我修改的程序的日志


我强调了行动和路径。路径显示了修改的内容和分支。

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

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

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

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

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

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

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

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

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

svn diff -r <start revision>:<end revision> --summarize <root svn URL>
分支在SVN中实现为目录,因此您需要确定项目的根目录,以及哪些直接子目录(按照惯例)“分支”

在上面的例子中

file:///home/xxx/svn/yyy/
被认为是项目的“根”url,因此从

file:///home/xxx/svn/yyy/trunk
告诉我它签入的“分支”是

trunk
请注意,其他项目已在上签入

trunk/src/main/java/com
但按照我的惯例,这不是一个分支。由于什么是分支的决定是常规的,因此最后确定哪些分支受到影响需要了解特定的SVN设置。就我而言

branches/branchA
被我认为是一个分支(对于我的项目),但是


不被视为分支。

修订是针对每个树的,因此首先需要获取修订的“更改”

svn diff -r <start revision>:<end revision> --summarize <root svn URL>
分支在SVN中实现为目录,因此您需要确定项目的根目录,以及哪些直接子目录(按照惯例)“分支”

在上面的例子中

file:///home/xxx/svn/yyy/
被认为是项目的“根”url,因此从

file:///home/xxx/svn/yyy/trunk
告诉我它签入的“分支”是

trunk
请注意,其他项目已在上签入

trunk/src/main/java/com
但按照我的惯例,这不是一个分支。由于什么是分支的决定是常规的,因此最后确定哪些分支受到影响需要了解特定的SVN设置。就我而言

branches/branchA
被我认为是一个分支(对于我的项目),但是


不被视为分支机构。

谢谢。这很有帮助,但我的一半开发人员都在Mac上,所以这个解决方案对他们不起作用。谢谢。这很有帮助,但我的一半开发人员都在Mac电脑上,所以这个解决方案对他们不起作用。这确实给了我我要找的信息,但我不能让它只对一个文件起作用。@DougNoel SVN提交不是单文件提交,而是“整树”提交。因此,如果您只有一个文件,第一步是确定上次修改它的提交位置,这可以通过
svn info filename
确定。如果只需要该文件的分支,则过滤该文件的差异信息。你永远不知道,但是两个副本可以在两个不同的分支上用相同的提交进行签入。这确实提供了我要查找的信息,但我无法使它仅用于一个文件。@DougNoel SVN提交不是单文件提交,而是“整树”提交。因此,如果您只有一个文件,第一步是确定上次修改它的提交位置,这可以通过
svn info filename
确定。如果只需要该文件的分支,则过滤该文件的差异信息。您永远不知道,但是两个副本可以在具有相同提交的两个不同分支上签入。