2

我有一个我想做的项目不必要的复杂通过将 git 用于我的本地源代码控制更容易。我们在工作中使用 TFS,但我还必须将源推送到客户端的 SVN 服务器以进行生产发布。TFS 需要成为正式的记录来源[直到我能提出令人信服的切换案例:-)],SVN 只是里程碑,我希望 git 成为日常工作环境。

第二部分我一直在使用git-svn,基本上只是在里程碑处提交 git,然后推送到 svn。

我也想转而使用 git 而不是 TFS 进行更积极的开发,但我不确定如何/是否可以同时设置两个映射。我看到的所有git-tfs和 git-svn 示例都是从克隆存储库开始的,这要求存储库为空。是否可以添加某种元数据而不是克隆来设置 TFS 映射?

映射也有点奇怪(它是一个 CMS 站点,所以我们不将核心文件存储在源代码管理中,只有我们的自定义):

  • 标签(仅由 SVN 使用)
  • 分支(来自 SVN,未使用)
  • 主干(来自 SVN,符号链接到网站)
  • 网站
    • DesktopModules(在 TFS 中映射)
    • 门户(在 TFS 中映射)
    • 提供者(在 TFS 中映射)

git 是否能够处理映射到根目录的 SVN 存储库和进一步映射的 TFS 存储库?

删除 TFS 中映射的文件夹,然后从 git-tfs 克隆它们是否有效?

4

2 回答 2

1

您可以通过添加适当的节来移植git-svn到任何存储库.git/config(检查任何工作存储库git-svn以查看它的外观),然后git-svn fetch填充它。git-svn两者不太可能git-tfs为相同的树生成​​相同的 SHA(例如,由于用户名映射或日期等琐碎的事情,或者元数据git-svn默认放入提交消息等不那么琐碎的事情),但合并应该是微不足道的。您可以使用svn.noMetadata禁用将 SVN 修订版映射到 git 提交的每个提交中的额外行。唯一的缺点是 rev_map 将是该信息的唯一来源,如果它被删除(或者如果你克隆你的工作副本),git-svn连接将被破坏。

于 2011-04-04T22:51:58.087 回答
0

我认为目前你不能。当您提交到 tfs - git-tfs 有效地将您的提交重写为具有相同树和更改评论的新提交(附加git-tfs-id: [http://tfs:8080/tfs]$/Project;C666到原始评论的末尾)。

有一些关于用git notes替换评论更改的想法。但它目前甚至不在计划中。

于 2011-08-10T08:18:59.967 回答