Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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
如何使用git svn作为svn存储库的中间审查工具?_Git_Commit_Git Svn - Fatal编程技术网

如何使用git svn作为svn存储库的中间审查工具?

如何使用git svn作为svn存储库的中间审查工具?,git,commit,git-svn,Git,Commit,Git Svn,在我工作的公司中,我们有一项政策,即所有代码在签入SVN存储库之前都应该经过审查。通常,在我提交之前,我只是让一个同事复习一下,但在这一刻,有几天没有人在附近,我有几个任务要和同一个班级一起做 我安装了git,并使用git svn创建了一个本地存储库。我在一段时间后提交了我将要提出的每一个更改,并且使用git svn dcommit,我可以在主存储库中同步我的内容 现在的问题是:如果我的同事在几天后将审查我的资料,他不同意一次提交,或者希望我做一些额外的更改(例如代码注释),会发生什么情况?我如

在我工作的公司中,我们有一项政策,即所有代码在签入SVN存储库之前都应该经过审查。通常,在我提交之前,我只是让一个同事复习一下,但在这一刻,有几天没有人在附近,我有几个任务要和同一个班级一起做

我安装了git,并使用git svn创建了一个本地存储库。我在一段时间后提交了我将要提出的每一个更改,并且使用
git svn dcommit
,我可以在主存储库中同步我的内容

现在的问题是:如果我的同事在几天后将审查我的资料,他不同意一次提交,或者希望我做一些额外的更改(例如代码注释),会发生什么情况?我如何做到这一点,而不必进行额外的提交,最终将显示在我的SVN主存储库中

例如,为了便于理解,我们假设我正在处理一个文件

  • SVN获取了版本1000
  • 添加了代码更改,git提交
  • 添加了代码更改B,git提交
  • 添加了代码更改C、git提交
现在,我的同事接受变更A和C,但不同意变更B,并希望在变更B的同时加入更多的评论。我希望最终得到的结果是:

  • SVN版次1001-代码变更A
  • SVN版次1002-修改代码更改B+附加注释
  • SVN版次1003-代码更改C

我对git不太熟悉,对SVN也很熟悉。如何在不进行第四次提交的情况下将提交的内容更改为代码更改B?

只需创建一个分支并在该分支上进行提交即可。让您的同事晚点查看代码,然后将代码合并回主干(例如)或其他分支。

只需创建一个分支并对该分支执行提交即可。让您的同事晚些时候查看代码,然后将代码合并回主干(例如)或其他分支。

关键是在获得批准之前不要将更改推送到svn。一旦运行了git svn dcommit,git就失去了编辑和重新排序提交的能力
dcommit
公开您的更改,并且svn的历史记录(在大多数情况下)是不可变的


我通常在分支中进行更改,并将它们推送到公共git存储库中,我将其位置提供给代码审阅者。然后,我可以在另一个分支继续从事另一个项目。根据审查的反馈,我可以在我的工作存储库中对分支进行更改并重新发布以供审查,当一切就绪时,我会进行最后的
git svn dcommit
以将更改最终确定为svn。

关键是在获得批准之前不要将更改推送到svn中。一旦运行了git svn dcommit,git就失去了编辑和重新排序提交的能力
dcommit
公开您的更改,并且svn的历史记录(在大多数情况下)是不可变的


我通常在分支中进行更改,并将它们推送到公共git存储库中,我将其位置提供给代码审阅者。然后,我可以在另一个分支继续从事另一个项目。根据审查的反馈,我可以在我的工作存储库中对分支进行更改并重新发布以供审查,当一切就绪时,我会执行最后的
git svn dcommit
以完成对svn的更改。

首先,在提交到
trunk
之前,您不需要额外的VCS在公司执行代码审查。这是对的。正确的(明智的)方法是,在分支机构中进行更改,完成后让同事检查分支机构,检查代码,对分支机构进行补救性更改,然后任何有权的人都会将分支机构合并到
trunk
。这是基本的VCS协议。如果你的公司不是这样做的,那么当涉及到风投时,这肯定表明你的公司做错了

如果你的公司政策是空洞的,因此你必须使用外部工具,那么请回答以下问题

比如说,为了 可理解性-我正在工作 在一个文件上

  • SVN获取了版本1000
  • 添加了代码更改,git提交
  • 添加了代码更改B,git提交
  • 添加了代码更改C、git提交
现在,我的同事接受了改变 和C,但不同意变更B, 希望有更多的评论 有了改变B.我想要的结果是什么 最终的结果是:

  • SVN版次1001-代码变更A
  • SVN版次1002-修改代码更改B+附加注释
  • SVN版次1003-代码更改C
我对git不是很熟悉,而且 我非常熟悉SVN。我该怎么办 改变我承诺的贡献 在不做任何修改的情况下将代码更改为B 第四次承诺

我甚至不明白,如果允许您进行三次影响一个特性的提交,为什么您首先要避免第四次提交

如果你真的,真的想完成整个想法,那么是的,你可以做到,要做到这一点,你需要非常小心地使用。这个强大的命令可以让您返回您的提交,并完全改变在每个提交中所做的更改。我必须强调的是,这很可能会导致工作损失(或者至少会花费您大量的恢复时间),并且只有在您对git本身非常了解的情况下才应该这样做


但是你真的,真的应该使用SVN分支和合并来完成所有这一切。

首先,你不应该需要额外的VCS在你的公司执行代码审查,然后再提交到
trunk
。这是对的。正确的(也是明智的)方法是,在分支中进行更改,完成后让同事检查分支,检查代码,提交r