我是Github的新手,想了解如何安排我的工作流程。
我们有一个小型的Web应用程序,我们使用XAMPP在Mac Mini上运行。我们在全国各地都有几台Mac Mini,我一直在寻找管理软件和更新软件的好方法,因为我对所有不同的版本感到非常沮丧。
问题在于软件的某些文件是共享的,但某些文件特定于每个客户端/ Mac Mini。我正在寻找一个简单的设置,所以我只需要更改一次公共文件,并且仍然为每个客户端提供特定文件(如模板)。 目前的情况是:
此文件夹在根目录中包含特定文件和两个公共文件,如下所示:
我正在寻找管理此问题的最佳方法。我做了一些关于这个主题的研究,但我希望有人能就这个具体情况向我提出建议。我觉得我有以下选择:
将所有内容放入1个仓库,但将特定文件放在不同的分支中(更新后是否必须将更改公用文件推送到每个客户端分支?)
使用2个repo(并使用.gitignore将特定文件中的公共文件分开)。 1带有公共文件,1带有客户端特定文件(在单独的分支中)。我早期的研究告诉我,这是不可能的,因为一切都在我的根目录而不是特定目录
使用git-subtree
使用git-submodules
使用gitslave
还有别的吗?
理想我正在寻找可以使用OSX Git GUI管理的解决方案。
关于我的工作流程。我希望我可以直接从我的htdocs软件文件夹中对代码进行所有更改。如果我只对公共文件进行更改,我当然希望将其提交给公共存储库。如果我对特定文件进行更改,我想首先连接到正确的分支或repo,然后更新它。 对于错误的术语我很抱歉,但我希望它仍然足够明确。
如果有人能指出我正确的方向,那将是非常好的。
答案 0 :(得分:1)
据我所知,唯一可以在git中运行的解决方案是选项1(分支)。
如果要区别对待的文件都在一个文件夹中,则其他所有文件都无效。
我是否必须将更改推送到每个客户端的公共文件 更新后的分支?
是的,你这样做。实际上,您需要先将更改合并到客户端分支(确切地说,合并到客户端分支的本地副本中),然后推出所有客户端分支。 这应该有用,虽然可能有点尴尬。您可以通过自动执行某些脚本来缓解这种情况。
如果您可以将自定义文件放入子文件夹,那么是的,您可以使用git-submodule,git-subtree或类似文件。但是,我认为这不会对您的情况有效。 git-submodule等。适用于您希望将内容保存在不同存储库中的情况。这意味着这两个部分(存储库)可以独立克隆,独立版本化,标记和扩展。独立分支等。
然而,据我所知,这不是你想要的。定制模板都是软件产品的一部分,并将随系统的其他部分一起发展。因此将它们放在单独的存储库中只会造成麻烦(例如,如果分支,则需要单独分支每个子模块 - 更糟糕的是,分别合并每个子模块。)
你只想维护一些文件的不同“版本”,这就是分支的用途。
但是,您应该考虑采用其他方法,即在运行时执行特定于系统的自定义。
如何做到这一点取决于细节,但作为一个想法,你可以有一个系统特定的事情表。然后在启动时检测主机系统(获取主机名或类似名称),并应用自定义项。
这可以避免多个分支的所有问题,同步它们,测试它们并确保部署正确的分支。此外,甚至可能更重要的是,您可以在一个代码库上工作,并且可以利用系统之间的相似性。最后,您可以在运行时打开和关闭自定义的各个部分,这极大地简化了与自定义相关的调试问题。
根据我的经验,这是一种比部署文件更简单,更健壮的方法,甚至可能是不同系统上的不同代码。我自己在几个项目中使用了这个想法并且效果很好。