转换为git时,我应该如何处理单个目录svn checkout?

时间:2011-09-07 10:53:50

标签: git svn version-control-migration sparse-checkout

我很快就会将我的应用程序部分从使用svn支持的存储库转换为使用git存储库。

我之前使用的是git-svn,但是整个团队都被转移到了git,我被要求成为这一举措的先锋。虽然我很高兴我理解如何做大部分行动,但我还有一个方面尚待解决。

我的配置存储库的一个目录一直用于跟踪独立Windows机器上外部应用程序的脚本目录。该应用程序的脚本目录位于应用程序安装目录中,因此使用svn我在适当的位置检查了该目录。

我希望我能够继续这种结构,但我的研究表明git中的狭窄克隆需要你保持相同的相对结构,这在我的情况下很难。

为明确起见,我想将myrepo:config/scripts的内容映射到C:\application\scripts

据我所知,我有几种选择:

1。为这些脚本文件使用单独的存储库。

这可能是首选,因为它允许我将回购克隆到正确的位置。

不幸的是,目前还没有允许配置数据(这些脚本就是这些)的结构存储在配置目录以外的任何地方。因此,除了我们希望的从svngit的直接转换之外,还需要对我们的存储库进行一些重组。

2。使用交接点。

我可以将git目录的config工作副本放在C:\的其他位置,然后使用联结点使目录显示为应用程序目录的子目录,就像Ger4ish suggests在unix上使用符号链接一样。

不幸的是,我没有该机器的管理员权限,所以这并不像第一次出现那么简单。

其他选择?

我想知道是否有错过的选项。

查看问题Sparse checkout in Git 1.7.0?的答案我可以得到一些方法,但是要求保持结构相同以及检查到特定位置的需要意味着此方法不会工作

1 个答案:

答案 0 :(得分:1)

你看过submodules了吗?您可以为配置脚本创建一个单独的git存储库,并将其作为子模块添加到主存储库中。这将允许您直接在application/scripts中执行检出,但仍将config目录保留在主存储库下。

子模块与主存储库的关系有一些细微差别,因此您希望任何提交到scripts目录的人都能理解这个工作流程。