使用git在两个地方跟踪文件的片段

时间:2010-05-06 07:12:45

标签: git split

我有

等代码
void myfunc()
{
  introduction();

  while(condition())
  {
    complex();
    loop();
    interior();
    code();
  }

  cleanup();
}

我想复制成两个版本,即:

void myfuncA()
{
  introduction();
  minorchangeA();

  while(condition())
  {
    complex();
    loop();
    interior();
    code();
  }

  cleanup();
}

void myfuncB()
{
  introduction();
  minorchangeB();

  while(condition())
  {
    complex();
    modifiedB();
    loop();
    interior();
    code();
  }

  cleanup();
  extracleanupB();
}

git声称要跟踪内容而不是文件,所以我需要告诉它这里有一些myfuncAmyfuncB共有的块,以便在与上游合并时更改为{{ 1}}这些更改应该传播到myfuncmyfuncA?如果是这样,怎么样?

可以编写代码,以便myfuncB通过测试条件A或B在每个点执行正确的操作,但这可能会严重影响可读性或性能。

2 个答案:

答案 0 :(得分:2)

不要重复代码。这是DRY principle

git和任何人都不会帮助你。

此外,你误解了git的角色:git跟踪文件内容,而不是块。没有办法告诉git,一个文件中的这样和那样的块是相同的。

答案 1 :(得分:1)

事实上,git它是一个很棒的源代码管理系统,但很少为你编程。