我想将 SVN diff 发布到审查委员会;差异是在分支 HEAD 和基本标记之间生成的。
我使用此命令生成 diff 文件:
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/files,https:/path/to/root/path/to/changed/files而不显示分支和标签(如 )之间的差异https:/path/to/root/tag/path/to/changed/files。
有什么办法可以做这样的工作吗?
您可以使用RBTools 命令发布此类差异post。
举例来说,您的 Subversion 存储库已在审核委员会使用以下 URL 注册:
http://svn.example.org/foo/base/group
Run Code Online (Sandbox Code Playgroud)
(哪里foo是噪音,哪里base是你的存储库的基础)
然后我们假设我们有两个标签
http://svn.example.org/foo/base/group/module/tag/abc1
http://svn.example.org/foo/base/group/module/tag/abc2
Run Code Online (Sandbox Code Playgroud)
whereabc2是基于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
Run Code Online (Sandbox Code Playgroud)
我们可以使用 发布 diff rbt post,但为此,我们需要一个 Subversion 工作目录。一个空的就足够了:
svn co --depth=empty $base
cd group
Run Code Online (Sandbox Code Playgroud)
该rbt命令需要一些配置,为了简化用户名/密码也可以存储在运行控制文件中,例如:
cat > .reviewboardrc <<EOF
REVIEWBOARD_URL = 'http://reviewboard.example.org/'
REPOSITORY = 'somerepo'
PASSWORD = 'einsfueralles'
USERNAME = 'juser'
EOF
Run Code Online (Sandbox Code Playgroud)
发布 diff 时,会rbt解析 diff 文件中相对于工作目录的相对路径,因此我们必须使用以下选项添加缺失的部分--basedir:
rbt post --diff-filename ../change_xyz.diff --basedir module/tag
Run Code Online (Sandbox Code Playgroud)
如果一切正常,rbt则将差异和引用的文件上传到新草稿并打印新的 URL,例如:
http://reviewboard.example.org/r/23/
http://reviewboard.example.org/r/23/diff/
Run Code Online (Sandbox Code Playgroud)
然后可以编辑草稿并最终通过 Web UI 发布。该rbt post命令还有几个选项来添加附加数据(例如--summary,--description)和/或直接发布它(参见--publish)。