相关疑难解决方法(0)

为什么git子模块与svn externals不兼容?

有很多网页在那里暗示让svn外部看起来像git子模块的hackish方法.我已经读过一些关于差异的说法,但这似乎不是很基础:

Git子模块链接到另一个项目的存储库中的特定提交,而svn:externals总是获取最新的修订.

为什么这种差异会使它们根本不相容?我们可以假设没有合理的默认值,例如大多数svn:externals指向永不移动的标签吗?

svn git git-svn svn-externals git-submodules

13
推荐指数
1
解决办法
6991
查看次数

如何使我的svn:externals策略适应git子模块?

我无法弄清楚如何将我的心态转变为git并遇到以下问题.我遇到的情况是我们有一个共享引擎和多个使用该引擎的项目.内部开发团队和第二方团队可能正在处理使用共享引擎的项目,并希望在开发期间尽可能多地使用共享引擎的HEAD,直到发布前几周,共享引擎将被标记并且分支,然后项目将使用该分支.项目团队通常一次只能处理一个项目,但可以在调试期间对共享引擎进行更改或添加功能.当他们提交这些更改时,我们的构建系统会运行以查找他们可能在提交时引入的任何问题.

我(我想)想要将这个模型与新项目/新公司一起使用.在svn中,结构是这样的:shared_engine

project_in_dev-+
               +- svn:external shared_engine:head
project_about_to_ship-+
                      +-svn:external shared_engine_rev1_branch
Run Code Online (Sandbox Code Playgroud)

这非常有效:

  • 项目开发人员可以执行一个命令来检查他们需要的所有依赖项
  • 项目开发人员可以轻松完成引擎工作并提交到共享引擎
  • 我们可以轻松地修改或更改项目使用的共享引擎与外部和修订
  • 您每日"从根项目更新"很容易获得引擎更新

好的,现在我已经转移到git,并且子模块SEEM是处理外部代码的新方法,但似乎我失去了一些功能.

  • 实际获取项目的所有依赖项是一个多步骤的过程.项目开发人员必须做一个git clone然后一个git子模块init/git子模块更新--recursive
  • 这是更新根项目和子模块的多步骤过程,因此如果另一个开发人员对子模块的更改与子模块进行了更改,则不会立即获得匹配的代码,并且可能会非常困惑
  • 子模块被锁定到特定的提交,如果你对子模块进行了更改,你将无法使它与共享引擎的头部一起工作
  • 我无法控制项目开发人员检查过的共享引擎的修订版,而没有提供更新内容的说明

所以我的问题如下:

  • 首先,关于子模块的上述假设是否正确?它似乎是基于我所读到的,但我不是百分之百确定,因为我还在搞清楚git
  • 如果我的假设是正确的,我是否正确处理问题?使用git时是否需要重新调整我的想法?换句话说,还有另一种方法可以做我想做的事情,需要以不同的方式思考这个过程吗?
  • 假设我没有吹过前两个,子模块不会做我想要的,会是什么?我读到了关于子树的合并,但那些看起来并不完全正确,因为看起来我无法将共享代码的更改重新放回到存储库中.

非常感谢您的帮助和耐心.如果不是很明显,我对git很新,我喜欢它并希望拥抱它,但我仍然有一些概念上的误解,因为我可能因多年使用中央回购而受到脑损伤.我想学习!此外,我整天都在rtfm'ing,并查看各种博客文章,stackoverflow问题等,我仍然没有得到它,我显然需要逐步说明我的情况.我没有同事可以询问这一点,西雅图地区的任何用户群可能都有一些git guru?:)

svn git git-submodules

10
推荐指数
1
解决办法
2359
查看次数

在"git svn clone"之后,我仍然没有很棒的分支合并提交?

在我做了git svn clone --stdlayout ...后,一切看起来都不错,我已经转换了远程分支.但是当git log --graph时,我没有看到任何分支合并图.这是正常的吗?

git git-svn

3
推荐指数
1
解决办法
863
查看次数

标签 统计

git ×3

git-submodules ×2

git-svn ×2

svn ×2

svn-externals ×1