1

有没有办法实现类似于这个人对 SVN 所做的事情? 如何使用 subversion 存储库作为新项目的模板?

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

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

分支是我的问题的解决方案吗?我应该为新站点创建一个新分支吗?这样我就可以通过两种方式进行更改,这是我非常喜欢的一种灵活性,支持多个项目,但仍将所有内容保存在一个 repo 下。

(有时可能会在要修复的新站点中发现错误,我们希望将修复带回源站点,反之亦然)

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

4

3 回答 3

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

以这种方式从模板创建新存储库也意味着,虽然存储库没有“链接”,但很容易拉入最近的模板更改。

于 2013-02-01T13:32:09.833 回答
2

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

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

如果你想为此目的创建一些高级的东西——我建议你创建 Windows 安装程序,它会在你每次开始新项目时安装你需要的所有东西。

于 2013-02-01T11:52:59.837 回答
1

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

如果您想要一个干净的开始,而不需要(简单)选项来应用模板中的更改,那么只需获取存储库内容的快照,并从中初始化一个新的存储库。


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

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

于 2013-02-01T11:51:45.363 回答