2011-04-04 52 views
2

我在工作中有一个项目,我想通过使用Git为我的本地源的控制,使不必要的复杂容易。我们在工作中使用TFS,但我还必须将源代码推送到客户端的SVN服务器以进行产品发布。 TFS需要成为正式的记录来源[直到我可以做一个令人信服的案例来切换:-)],SVN只是里程碑,我很乐意让git成为日常的工作环境。如何在同一个源代码树中使用GIT-TFS和GIT-SVN?

我一直在使用git-svn第二部分,基本上只是承诺在里程碑的Git,然后推到SVN。

我想移动到使用Git代替TFS为更积极的发展也一样,但我不知道如何/如果我能在同一时间都映射设置。我看到的所有git-tfs和git-svn的示例都是从克隆存储库开始的,这需要存储库为空。是否有某种我可以添加的元数据,而不是克隆来设置TFS映射?

的映射也有点怪异(这是一个CMS的网站,所以我们没有核心文件存储在源代码控制,只有我们的自定义):

  • 标签(仅使用SVN)
  • 分支(从SVN,未使用)
  • 中继线(从SVN,符号链接到网站)
  • 网站
    • DesktopModules(在TFS映射)
    • 门户(TFS中映射)
    • 提供商(TFS中映射)

威尔混帐能够处理在根和进一步映射的TFS库映射SVN库?

将它的工作,以删除TFS映射的文件夹,然后从混帐TFS克隆呢?

+0

我打算+1将git-tfs引起我的注意。这会让我的生活变得更好:) – 2011-04-04 14:07:25

回答

1

您可以通过添加适当的节到.git/config嫁接git-svn到任何存储库(检查任何工作git-svn回购,看看是什么样子),其次是git-svn fetch来填充它。这是不可能的,无论git-svngit-tfs将产生相同的树相同的SHA(例如,由于像用户名映射或日期,或类似元数据git-svn少琐碎的事情琐碎的事情放入提交默认消息),但合并应该是微不足道的。您可以使用svn.noMetadata禁用将SVN修订版映射到git commit的每次提交中的额外行。唯一的缺点是,rev_map将成为这些信息的唯一来源,如果它被删除(或者如果你克隆你的工作副本),git-svn连接将被中断。

+0

.git/config对于git-svn有以下部分:https://gist.github.com/904097 – bdukes 2011-04-05 17:47:07

+0

git-tfs部分看起来像这样:https:// gist .github.com/904110 – bdukes 2011-04-05 17:50:31

0

我认为目前你不能。当你提交给tfs时 - git-tfs有效地将你的提交改写为新的,并且具有相同的树和修改后的注释(在原始注释结尾添加类似git-tfs-id: [http://tfs:8080/tfs]$/Project;C666的内容)。

有一些thoughts关于与git notes更换评论改变。但目前它还没有计划。

相关问题