将自定义果园更新到最新版本

时间:2014-05-14 07:56:39

标签: git orchardcms

我的团队和我几个月前检查了果园1.7.2,并为解决方案添加了许多模块/功能。不幸的是,当时我们没有在orchard的源代码中设置任何git'ineply'遥控器,也没有版本果园的源代码。

我想通过正确设置来改变我们遵循果园源代码演变的方式。

我看待它的方式:

  • 如果可能,我们希望保留我们的git历史记录;
  • 我们需要设置一个指向https://git01.codeplex.com/orchard(果园源代码)的git遥控器,以便在几个git命令中跟踪果园的最新更新;

因此,更新到最新版本将非常简单:

# Update local repo's master to raw latest orchard
git fetch upstream
git checkout master
git merge upstream/master

# Update development branch, merge changes and adapt custom code
git checkout dev
git merge master
#update code and run tests
git commit -m "updated orchard from 1.7.2 to 1.8.0"
git push origin

如果知道目前,你将如何继续:

  • 我们的项目托管在BitBucket上;
  • 它只包含一个分支,master;

1 个答案:

答案 0 :(得分:1)

如果我理解你的话,你的工作很大程度上取决于果园来源。为了简单起见,你可以为orchard创建第二个遥控器(它只跟踪遥控器的主分支),如下所示:

git remote add -t master orchard https://git01.codeplex.com/orchard

之后你就可以从那个“新”遥控器中取出或拉出。你可以考虑从特殊的“整合”分支中“拉入”,让你的主人拥有更多的自由。

在这个例子中,我将1.8.x - 分支合并到一个集成分支中:

$ git checkout -b integration
Switched to a new branch 'integration'
$ git pull -f orchard 1.8.x:integration
From https://git01.codeplex.com/orchard
 + 74136b6...37e9a33 1.8.x      -> integration  (forced update)

但是意识到正常合并将失败,因为您的代码库无法与orchard的代码库匹配 - 它们依赖于不同的commit-id。这就是为什么你需要使用--force - 标志来禁用id-check并合并像地狱之类的东西。

之后 - 当然 - 你会遇到很多合并冲突。

为了避免将来合并的麻烦,我建议你分叉果园存储库并以相反的方式进行合并。将项目合并到orchard-fork中。然后你就可以对未来的果园提交进行修改。