Git:舞台,现场,开发网络环境中的“子项目”差异化

时间:2011-01-10 08:35:20

标签: git git-branch

我有一个复杂的Web项目模板,其中文件可以分为三类。首先,在每台服务器上应该唯一的设置相关文件不会经常更新,但在版本控制中使用它会很好。其次,开发文件是开发人员编码的实际文件,每个项目都是唯一的,是版本控制的主要文件。最后,用户生成的内容主要是舞台和开发环境中的测试数据,但是Live服务器上的正确数据,理想情况下也应该受版本控制。

在每个项目的根文件夹中是一个设置文件,它是第一组的一部分,然后有三个文件夹包含开发文件,最后是一个包含网站图像的文件夹,以及用户生成的文件。 / p>

我尝试了什么:

我无法使用整个文件夹,因为我会在本地直播和舞台上拥有相同的用户生成内容,每次从本地推送到舞台,从舞台到现场,都必须重新调整设置文件

我尝试使用master分支用于开发文件,并为用户生成的内容和设置文件使用单独的分支,然后将master从本地推送到舞台等等。但是当我在舞台上进行结帐时,它会删除不相关的文件。

我已经尝试为开发,用户生成的内容和设置创建单独的分支,然后在推送到阶段之后将所有内容合并到master中。这种情况下的问题出现在本地开发服务器上,其中提交过程变得有点复杂:checkout dev;添加更改的文件;提交开发;结账大师;合并dev ugc设置。我也担心在这种情况下会丢失一些ugc跟踪的文件。

最大的问题

任何人都可以建议一个新的解决方案或任何可以添加到当前解决方案中以使其成为可能吗?不幸的是,我不能使用单独的文件夹,因为使用的框架(私有框架)不允许它。

1 个答案:

答案 0 :(得分:0)

虽然这是组织事物的一种非常糟糕的方式,但您可以使用嵌套的Git存储库和.gitignore文件,这些文件忽略了不属于给定存储库的任何内容:

.git/
.gitignore   <---- ignoring everything except settings-file
your_project
  .git/
  .gitignore <---- ignoring settings-file, user content, and user-content/.git
  dev-folder-1/
  dev-folder-2/
  settings-file
  user-content/
    .git/
    .gitignore <-- ignoring everything except user content

这将有效地允许您拥有3个不同的“重叠”存储库,这些存储库可以跟踪文件结构的不同部分。

但实际上,最好找到一种方法来重新组织文件和/或版本控制需求。

相关问题