在Review Board上发布SVN分支和标签之间的差异

5
我想把SVN的差异提交到review board上;差异是在分支HEAD和基本标签之间生成的。
我使用了这个命令来生成diff文件:
svn diff https:/path/to/branch/head https:/path/to/tag
需要注意的是:
- 我尝试使用rbt diff revision1:revision2命令来生成差异。但是,我遇到了一个问题,即review board仅接受分支提交范围内的修订版本范围(不接受标记的修订版本)。 - 我尝试使用svn diff命令进行比较,然后使用rbt post --diff-filename上传文件,但命令返回错误,要求指定基目录。我添加了基本目录作为根目录,使用rbt post --basedir https:/path/to/root;review board接受了,但在网页上显示的差异是在https:/path/to/root/branches/featureName/path/to/changed/files和https:/path/to/root/path/to/changed/files之间的差异,而没有显示差异是在分支和标记之间的,如https:/path/to/root/tag/path/to/changed/files所示。
有没有办法完成这样的工作?

你能使用 SVN diff 生成所需的差异文件吗?我认为你只有在上传到审查板时才会遇到问题,是这样吗? - Sunilkumar V
是的,我可以使用SVN diff生成差异文件。但在尝试上传差异文件到Review Board时遇到了错误信息: 错误信息示例: /path/to/folder/branches/development/feature/branches/development/feature/path/to/file.py: The file was not found in the repository. (HTTP 400, API Error 207) 正如您所看到的,Review Board重复了分支路径两次,这是不正确的;期望的路径应该像_ /path/to/folder/branches/development/feature/path/to/file.py_一样。 某种程度上是SVN差异文件与Review Board解析之间的问题,我不知道怎么解决。 谢谢 @Sukuva - Muhammad Yusuf
你能否尝试从代码库的根目录生成差异,而不是单个文件?根目录应该与你的审查板基本URL相同。 - Sunilkumar V
你必须确保的一件事是“基本路径”位于存储库顶部和生成差异的路径之间。 - Sunilkumar V
我希望在编辑后,这张票更加清晰明了。 - Muhammad Yusuf
1个回答

1
你可以使用 RBToolspost 命令发布这样的差异文件。
例如,假设你的 Subversion 代码库已经在 review board 上注册,并且 URL 如下:
http://svn.example.org/foo/base/group

(其中foo是噪音,base是您存储库的基础)

然后假设我们有两个标签

http://svn.example.org/foo/base/group/module/tag/abc1
http://svn.example.org/foo/base/group/module/tag/abc2

其中abc2基于abc1并引入了一些更改。

要为这些更改创建审核请求,首先我们需要使用Subversion进行差异比较:

base=http://svn.example.org/foo/base/group
svn diff $base/module/tag/abc1 $base/module/tag/abc2 \
  > --patch-compatible > change_xyz.diff

我们可以使用 rbt post 提交差异,但是为此,我们需要一个 Subversion 工作目录。一个空的工作目录就足够了:
svn co --depth=empty $base
cd group
< p > rbt 命令需要一些配置,为了简化事情,用户名和密码也可以存储在运行控制文件中,例如:

cat > .reviewboardrc <<EOF
REVIEWBOARD_URL = 'http://reviewboard.example.org/'
REPOSITORY = 'somerepo'
PASSWORD = 'einsfueralles'
USERNAME = 'juser'
EOF

发布差异时,rbt会根据工作目录解析差异文件中的相对路径,因此我们需要使用--basedir选项添加缺失的部分:

rbt post --diff-filename ../change_xyz.diff --basedir module/tag

如果一切正常,rbt 会上传差异和引用的文件到一个新的草稿中,并打印出新的URL地址,例如:
http://reviewboard.example.org/r/23/
http://reviewboard.example.org/r/23/diff/

草案可以通过Web界面进行编辑,最终发布。rbt post命令还有几个选项可添加其他数据(例如--summary、--description)和/或直接发布它(参见--publish)。

我已经按照您上面所说的做了,但问题仍然存在于Review Board中URL预览中。我可以看到URLs显示如下: [http://svn.example.org/foo/base/group/module/tag/abc1] 这是第一个基本部分(差异预览中的右侧)。 [http://svn.example.org/foo/base/abc2] 正如您所看到的,在差异预览中左侧的URL没有完整的URL。 - Muhammad Yusuf
@MuhammadYusuf,如此而已,我的答案只适用于 SVN URL,即仅最后一个组件不同的URL - 例如 http://example.org/foo/tag/abc1http://example.org/foo/tag/abc2 - maxschlepzig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接