好的,所以这个问题的不同版本无处不在,但我越是谷歌,它就会越混乱。
因此。我是内容管理系统的唯一开发人员,该系统在远程位置的Linux服务器场上运行。它有大约700MB的PHP文件保存在/ Atlas / Core层次结构中,700MB的站点文件保存在/ Atlas / Sites中 - 所有媒体和临时数据都保存在这些位置之外,因此无论出于何种意图和目的,这两个位置构成了我系统的肉。
Sites目录对于这个特定的位置是唯一的,不需要与Core目录同时进行版本化 - 基本上,据我所知 - 将这些作为两个存储库是正确的方法。
我在Mac上完成所有开发工作(使用Mac,笔记本电脑,家用Mac等),因为我的CMS配置为在远程Linux系统上运行,在我的工作环境中设置相同的Apache / MySQL环境这是一个优先事项 - 它可能已经完成,但我不知道它是否值得。
那么,为什么要进行版本控制呢?好吧,一个是能够回到早期版本,第二个是/如果有更多的开发人员参与。
但是我该怎么做?我是否在服务器X上有一个存储库,我的实时生产服务器是服务器Y,然后我在服务器Z上设置了“测试”环境?因此,对Z进行了更改,将其推到X,然后拉到Y?
然后我从任何Mac连接到Z,进行更改,并在Web浏览器中检查它们,然后将它们两步推送到生产服务器?对我来说这显然是非常麻烦的,但如果没有别的办法吗?
关于如何处理此问题的任何想法?我究竟做错了什么?我应该使用什么版本系统?
答案 0 :(得分:0)
那里的问题很少,所以我会尽力解决这些问题;
Q1。那么,为什么要进行版本控制呢?
你给出的两个原因绰绰有余,但也是;
一个更好的问题可能是,is there a good reason not to have version control?
我能想到的唯一一个问题就是它在你的工作流程中增加了几步,但是从长远来看,它可以获得100倍的回报,你可以采取额外的步骤并且应该忍受。
我建议将git与BitBucket或GitHub等在线存储库服务一起使用。我更喜欢BitBucket - 尽可能多的免费私人回购(发布时)。
Q2。但是我该怎么办呢? 我是否在服务器X上有一个存储库,我的实时生产服务器是服务器Y,然后我在服务器Z上设置了“测试”环境?因此,对Z进行了更改,将其推到X,然后拉到Y?
你所描述的听起来很好,所以只是:
server X
。“......将它们推向生产服务器两步?......”别无他法?“
严格来说,你甚至不需要服务器X.你可以直接从Y推送到Z.我不会,因为我更喜欢使用你所描述的中央存储库的概念。每个git repo都是存储库的完整副本,所以你可以直接从Y推送到Z.此链接可能有用;
关于如何处理此问题的任何想法?我究竟做错了什么?什么 我应该使用版本控制系统吗?
我认为你做错了什么。
正如我上面所说,我推荐git。 Mercurial非常相似,但我发现有更多支持可用于git。我认为BitBucket和GitHub都支持。
如果您最终与多个开发人员合作,您将希望改变我想象的这种方法,并开始在本地开发。在这种情况下,以下内容可能有所帮助:
注意 - 我也怀疑你有不想提交的文件,因为只有700MB的代码是巨大的。使用.gitignore文件过滤掉不需要跟踪的文件。
答案 1 :(得分:-1)
我认为你工作环境中的Apache / MySQL是最好的选择。你可以有更简单的开发过程。
关于版本控制,我只对尺寸有疑问。 700Mb是非常大的代码库。例如。 Linux内核只有大约100Mb,是由数千人写的几年。可能你有很多二进制文件?
无论如何,我建议首先尝试git,但请记住,它在真正的源代码上工作得最好,而不是二进制/自动生成的文件。如果你可以排除它们,它会很棒。如果您有如此优秀的代码库,我还建议将其拆分为几个小型存储库。
答案 2 :(得分:-1)
首先,700MB的源有一些(非常)错误。我假设这不是所有真正的来源,但那里有一些数据库转储和图像?
使用git对整个版本进行版本控制非常简单。只要您是唯一的开发人员,您根本不需要中央服务器来代码。只需在您的开发系统上设置git并开始版本控制。如果你愿意,你可以在那里停下来。坚持使用旧的部署过程并完成它。
下一步是为该设置添加一个中央回购。我个人建议获得7美元/月的私人github回购。这样您就不必担心设置或备份,并且在项目中添加新的开发人员很容易。此外,您还可以获得代码审查和问题跟踪当你有一个中央回购时,你只需要在那里推动你的改变。完成。拥有中央仓库(只要您是唯一的开发人员)的最大优势是您可以在远程位置备份代码及其所有历史记录。
如果您愿意,还可以使用git进行部署。我推荐这个。有关于如何做到这一点的多个教程。我更喜欢“推送和自动结账”设置。然后你的工作流程是这样的:开发,提交,推送到网络服务器。无论你是否拥有中央回购都没有任何区别。
我推荐的版本控制系统肯定是git。或者任何其他分散的,但我只有git的经验。