Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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 Subversion存储库中的Git工作副本_Svn_Git - Fatal编程技术网

Svn Subversion存储库中的Git工作副本

Svn Subversion存储库中的Git工作副本,svn,git,Svn,Git,我有一个项目在工作,我们使用Subversion来控制一切。然而,我们有一个特定项目的客户,他使用Git完成了一些我需要签出并放入项目存储库的事情。通常,我只需签出Git repo,将其导出到我的SVN工作副本中,对文件进行版本设置,然后就可以使用它了。然而,这个家伙经常更新这个代码,我需要呆在他所在的地方 如果我只是将Git存储库签出到我的SVN工作副本中并对文件进行版本设置,会发生什么 注意Git svn不是一个选项,我从未使用过它,不幸的是,我没有时间为此学习新东西。只需克隆Git回购即可

我有一个项目在工作,我们使用Subversion来控制一切。然而,我们有一个特定项目的客户,他使用Git完成了一些我需要签出并放入项目存储库的事情。通常,我只需签出Git repo,将其导出到我的SVN工作副本中,对文件进行版本设置,然后就可以使用它了。然而,这个家伙经常更新这个代码,我需要呆在他所在的地方

如果我只是将Git存储库签出到我的SVN工作副本中并对文件进行版本设置,会发生什么


注意Git svn不是一个选项,我从未使用过它,不幸的是,我没有时间为此学习新东西。

只需克隆Git回购即可。不会发生任何不好的事情,您可以通过执行
git update
来更新代码。您可以安全地将git repo提交到subversion中,我以前已经这样做过。

您建议的解决方案应该可以工作,因为git和svn具有不同的元文件,并且只要您不将一个版本控制系统的元文件添加到另一个版本控制系统中,它们之间就没有冲突

但是请注意,无论何时更改文件,都必须将它们添加到git和subversion中,因此必须处理两个不同的文件控制系统

正如您所暗示的,使用git svn将对您有所帮助,因为它将允许您仅使用git,然后使用git svn与您的中心svn repo进行同步。我是在工作中这样做的,而且做起来非常简单,而且(大多数时候)工作完美无瑕。我想学它,我就是你。在任何情况下,您都必须学习git才能有效地与客户机协作,而学习git svn则相对简单。您基本上只需要三个命令:

  • git svn fetch-获取对回购协议的最新svn更改
  • git重新设置git svn的基础-以合并svn更改
  • git svn DCOMIT-提交svn回购协议

学习git是非常值得的,因为最终,我发现它比svn优越得多。

这没有任何技术问题,但最终会成为一个麻烦。每次进行更改时,都需要将其提交到Git,然后将Git存储库中创建的所有新文件添加到Subversion,然后将所有这些文件提交到Subversion。当您在中合并他的任何更改时,您也需要执行所有这些操作

我的一个问题是,你为什么要这样做;在Subversion中使用它有什么好处?如果您需要将更改与他的上游存储库合并,那么无论如何您都需要学习Git。在这一点上,您最好只使用Git来进行版本控制,而不要通过尝试与Subversion集成而使事情复杂化。如果你只是想把最终的代码发给他,让他集成,那么为什么还要费心把Git repo检查到Subversion中呢?做你通常做的事情,将当前副本检查到Subversion中,处理它,然后在完成后将最终结果发送给他


git svn
如果代码的官方上游副本在Subversion中,那么它将非常有用,但是您希望使用git处理它,因为您更喜欢git。当您想使用Subversion工具时,使用Git管理的上游项目并没有多大帮助。

实际上,我主要想在这个项目中使用Subversion。我只需要Git,因为这个外部项目托管在Git存储库中,并且需要能够更新我们的客户对其项目所做的任何更改。好处是我的老板不会因为使用不熟悉的东西而对我发火。我完全是为了提高效率,但我也不想咬人。这就是我最终要做的,我只是想确保在将代码检查到我们的SVN repo时,.git目录不会被破坏。我最终学习了git/git SVN,现在我每天在工作中使用git SVN。对于那些害怕git的人来说,这并不像你想象的那么令人畏惧。日常使用非常简单,像GitExtensions和git这样的GUI工具使它更容易学习。在本地有项目历史记录也很好,在我的主要项目上,责备和搜索很快就结束了。如果您有一个SVN项目,git SVN比git IMO简单一点,所以这是一个尝试git的好机会。我仍在检查这个答案,但我强烈建议学习如何使用git svn,而不是将两个工作副本混合在一起。很抱歉在这么一篇老帖子上发表评论,但遇到这一点让我想起了这个解决方案是多么低效,特别是考虑到git存储库有这么多的历史。学习一些新命令更有意义,因为git可以与git和svn远程接口。我知道如何使用git,只是从来没有使用过它与Subversion存储库接口。就我个人而言,我更喜欢Mercurial而不是Git,并且使用过hgsubversion,但是对于这个项目,我真的没有时间学习新东西。在工作中使用Mercurial会导致我的老板不得不学习一种新工具,所以Subversion就是这样。