使用Git / Hg存储库作为模板项目

时间:2013-02-01 11:43:41

标签: asp.net-mvc git mercurial tortoisehg

有没有办法实现类似于这个人用SVN做的事情? How to use a subversion repository as a template for new projects?

我有一个基本的ASP.NET MVC项目,它本质上是一个简单的CMS站点,我以此为基础。

我不喜欢每次都要将存储库克隆到新网站的想法,因为这会在不同的位置创建相同存储库的多个副本,这对我来说似乎不够干净。

分支机构是我的问题的解决方案吗?我应该为新网站创建一个新分支吗?这样我就能够以两种方式带来变化,这是我非常喜欢的灵活性,支持多个项目,但仍然保留一个回购。

(有时可能会在新网站中发现一个错误,我们希望将修复程序恢复到源网站,反之亦然)

请根据Git / Hg给出答案,我同时使用两者,而且我相信它们足够相似。

3 个答案:

答案 0 :(得分:3)

正如@hyde所说,克隆是DVCS的工作方式,所以你不应该有这个问题。

但是,如果您更感兴趣,例如,无法将站点的更改意外地推回到模板,那么您可以初始化新的存储库,然后再从模板执行任何其他操作pull(我在这里考虑Mercurial,我猜想在Git中可以有类似的东西):

$ hg init new_project
$ cd new_project
$ hg pull -u ../template
$ hg push
comparing with default-push
abort: repository default-push not found!

此序列将创建一个新的存储库,使用最新模板(包括所有更改集)进行更新,但由于它不是直接克隆,因此您无法将更改意外地推送回模板。但是,由于初始更改集是相同的,如果您对新项目中的模板进行了有用的更改,您仍然可以通过指定目标来将其推回:

$ hg push ../template
pushing to ../template
searching for changes
no changes found

以这种方式从模板创建新存储库也意味着,虽然存储库不是"链接"因此,引入最近的模板更改很简单。

答案 1 :(得分:2)

我认为分支机构不是可以帮助你的东西。从非常基本的时间开始,分支用于在同一个项目上工作,但是在不同的模式(维护,下一个版本,新功能添加和类似的东西)中,每个新项目创建新分支从概念的角度来看是错误的。

如果您使用git为什么不创建模板项目,请将其保存到github,每次启动新项目时只需将其分叉到您的计算机上,然后创建新的存储库并将新站点推送到它。思考是一种标准方法。

如果您想为此目的创建一些高级内容 - 我建议您创建Windows安装程序,它将在您开始新项目时安装所需的所有内容。

答案 2 :(得分:1)

只需克隆存储库。如果要避免使用具有不同默认分支的多个克隆,请对特定于站点的分支进行修改,该分支将是该站点的“默认分支”。然后,您还可以通过拉动和合并来轻松更新“模板”代码。

如果您想要一个干净的启动而没有(简单)选项来应用模板中的更改,那么只需获取存储库内容的快照,然后从中创建一个新的存储库。


  

我不喜欢将存储库克隆到新存储库中的想法   网站每次因为它创建相同的多个副本   存储库位于不同的位置,看起来不够干净   我

嗯,这就是分布式版本控制系统所做的事情。从技术上讲,没有中央存储库。 “中央存储库”仅仅意味着一个特定的克隆,每个参与者都或多或少地同意用于共享他们的更改。此外,它完全取决于DVCS用户,他们推送到中央存储库的内容,以及他们只保留在他们的克隆中的内容。