在本地使用Git来管理Surround SCM存储库中的代码

时间:2014-10-29 14:50:13

标签: git version-control surroundscm

我正在寻找Git和Seapine Surround SCM之间的双向桥梁,类似于git-tfsgit-svn。正如我一直在写这篇文章,我发现这是一个真正高的订单,所以我很期待评论/答案,这是不可能的。

我找到了this question而我并不认为它真的涵盖了我想要的东西。我不想离开Surround,如果Git知道Surround中的文件历史,我也不在乎。

我公司使用的Surround SCM并不能满足我的需求。我一直在Cygwin中使用git来改组代码,但Surround throws适合在单个SCM repo下切换Git分支。通常,SCM告诉我,我在切换Git分支后修改了一些文件但是,当我要求diff时,它告诉我文件是相同的。它是一个可以使用的解决方案,但它也很明显,它并不是一个非常流畅的解决方案,因为Git和Surround实际上并不是真的互相交流而且并非如此快朋友。

我并非100%确定我上面提到的桥梁是我需要的完美类似物。我在下面列出了我的要求和用例。如果有其他可用的解决方案可以让我执行我的用例,我全心全意。

我们将切换到TFS(最终),所以我希望有一个相对简单的解决方案(如果存在)。我愿意花一些时间研究和配置东西,但我真的不知道从哪里开始。如果有人知道如何处理这个问题,我甚至会有一些带宽来编写我自己的解决方案。

假设我没有权限做任何事情,但检查现有的回购并提交给他们。我无法分支,创建新的回购,无论如何。

要求:

  • 适用于Windows 7。
    • 理想情况下,这意味着它可以在Git bash或Cygwin中使用,但GUI解决方案也是可以接受的。
  • 最小/无配置(即交钥匙解决方案或仅需要我将其指向正确目录的东西)。
    • 假设对Git,Cygwin和Surround有一定的熟练程度,并且已经安装了这三个。
    • 我有很大的自由度可以安装我需要的任何东西,考虑到它是公司的电脑。

用例:

  • 使用Git管理并行错误修复和功能实现。
    • 如果我对Git Master进行更改,我希望将它们签入SCM回购。
    • 如果我将一个分支合并到Git Master,我希望SCM能够看到这些变化并将其分阶段进行登记。
    • 如果我创建了Master的分支,我不希望它在SCM中创建相应的分支:至少不是自动的。如果这是一个选项可能会很好,但它绝对不是必需的。

我现在就把这些细节留在这里。但是,如果我没有充分解释我的问题以及我希望如何解决这些问题,我可以解释这些问题。

1 个答案:

答案 0 :(得分:1)

这是我的实验性hacky解决方案。它根本不是双向桥,但它允许我使用Git处理我的本地工作空间而不会破坏Surround(到目前为止)。

为避免扰乱环绕声:

  • 在Surround工作目录中初始化一个Git仓库。
    • Surround(至少是我公司IT部门设置的方式)忽略了.git文件夹。
    • 将.MySCMServerInfo添加到.gitignore。确保模式在子目录中查找:**/.MySCMServerInfo应该可以解决问题。
  • 将此新Git仓库克隆到不同的物理位置。
    • 对于这个克隆回购的任何更改都无法被Surround发现,因此您可以随心所欲地做任何事情,而不用Surround是明智的。

从本地工作空间进行更改到中央环绕声回购是整个事情中的黑客部分,但我还没有解决问题。

  • 确保您的Surround工作目录中有最新的回购。
  • 使用Git将这些更改合并到克隆的仓库中(即Surround未跟踪的仓库)。
  • 根据需要解决任何合并冲突。
  • 将更改提交给克隆的回购。
  • 将克隆回购中的更改提取到原始文件。
  • 检查环绕声中的变化。

这根本不是优雅的,但是当我等待TFS时,它为我的本地工作区带来了很多Git功能。