【问题标题】:post a diff between svn branch and a tag on review board在评论板上发布 svn 分支和标签之间的差异
【发布时间】:2016-04-23 02:12:39
【问题描述】:

我想将 SVN 差异发布到审查委员会; diff 是在分支 HEAD 和基本标签之间生成的。

我使用这个命令来生成差异文件:

svn diff https:/path/to/branch/head https:/path/to/tag

注意

  • 我尝试使用rbt diff revision1:revision2 命令生成差异。我有一个问题,审查委员会只接受分支提交内的修订范围(不接受来自标签的修订)。

  • 我尝试使用svn diff 命令进行比较,然后使用rbt post --diff-filename 上传文件,但该命令返回一个需要基本目录的错误;我使用 rbt post --basedir https:/path/to/root 将基本目录添加为根目录;审查委员会接受但在网页上显示差异,例如 https:/path/to/root/branches/featureName/path/to/changed/fileshttps:/path/to/root/path/to/changed/files 之间的差异,但没有显示差异在分支和 https:/path/to/root/tag/path/to/changed/files 之类的标签之间。

有什么办法可以做这样的工作吗?

【问题讨论】:

  • 您是否能够使用 SVN diff 生成所需的 diff 文件?我认为您将相同的内容上传到审查委员会时唯一的问题,对吗?
  • 是的,我可以使用 SVN diff 生成 diff 文件。当尝试将差异文件上传到审查板但出现错误消息时,错误消息示例:/path/to/folder/branches/development/feature/branches/development/feature/path/to/file.py:在存储库中找不到文件。 (HTTP 400,API 错误 207) 如您所见,审查委员会重复了两次分支路径,这是不正确的;预计会有像 /path/to/folder/branches/development/feature/path/to/file.py 这样的路径,SVN diff 文件和审查板解析之间存在问题;我不知道谢谢@Sukuva
  • 您可以尝试从存储库的根目录而不是单个文件生成差异吗?根目录应与您的评论板基本网址相同
  • 您必须确保的一件事是存储库顶部和生成差异的路径之间的“基本路径”
  • 希望修改后的票更清晰。

标签: svn review-board


【解决方案1】:

您可以使用RBTools post 命令发布这样的差异。

例如,您的 Subversion 存储库在审查委员会使用以下 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

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/

然后可以编辑草稿并最终通过网络 UI 发布。 rbt post 命令还有几个选项可以添加额外数据(例如--summary--description)和/或直接发布(参见--publish)。

【讨论】:

  • 我已经按照你上面所说的做了,但问题在于审查委员会中的 URL 预览我可以看到这样显示的 URL:[svn.example.org/foo/base/group/module/tag/abc1] 那是第一个基本部分(差异预览中的右侧)[svn.example.org/foo/base/abc2],您可以看到差异预览中的左侧 URL 没有完整的 URL
  • @MuhammadYusuf,照原样,我的答案仅适用于只有最后一个组件不同的 SVN URL - 如http://example.org/foo/tag/abc1http://example.org/foo/tag/abc2
猜你喜欢
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2014-01-07
相关资源
最近更新 更多