Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 版本控制建议_Version Control_Mercurial_Lamp_Bitbucket - Fatal编程技术网

Version control 版本控制建议

Version control 版本控制建议,version-control,mercurial,lamp,bitbucket,Version Control,Mercurial,Lamp,Bitbucket,我们决定采用版本控制系统——使用Mercurial客户端和Bitbucket作为存储库。但我突然想到一个我没有考虑到的问题。 我们有一个内部开发灯服务器(Ubuntu),所有开发人员都在其上存储的网站上工作,这意味着所有开发人员共享一个文件源,我们都在使用它。很少有两个不同的开发人员同时在同一个站点上工作,但这种情况确实偶尔发生。这意味着,如果两个开发人员同时处理同一个文件,他们可以轻松地覆盖彼此的工作 所以我的问题是:这个问题的最佳解决方案是什么?请记住,我们喜欢单个内部服务器的便利性,这样我

我们决定采用版本控制系统——使用Mercurial客户端和Bitbucket作为存储库。但我突然想到一个我没有考虑到的问题。 我们有一个内部开发灯服务器(Ubuntu),所有开发人员都在其上存储的网站上工作,这意味着所有开发人员共享一个文件源,我们都在使用它。很少有两个不同的开发人员同时在同一个站点上工作,但这种情况确实偶尔发生。这意味着,如果两个开发人员同时处理同一个文件,他们可以轻松地覆盖彼此的工作

所以我的问题是:这个问题的最佳解决方案是什么?请记住,我们喜欢单个内部服务器的便利性,这样我们就可以在内部演示站点,并且它还具有一个用于备份文件和数据库的cron作业

我猜每个开发人员都必须在各自的工作站上运行自己的LAMP(或WAMP)服务器,提交并推送到bitbucket存储库。当然,无论何时在不同的站点上工作,都要像往常一样拉拽并解决任何差异。这当然剥夺了其他团队成员(非开发人员)浏览192.168.0.100(LAMP服务器IP地址)和查看网站进度的便利,更不用说一些客户端也可以从外部访问同一服务器(我已经设置了一个端口转发,并限制为其IP地址)看看他们网站的进展

如有任何建议,将不胜感激


提前感谢。

是的,更好的解决方案可能是为每个开发人员设置一个本地服务器。这可能会给您带来不便,因为您显然习惯于共享服务器,但请考虑:

  • 如果您真的对使用一台服务器作为演示服务器感兴趣,那么最好不要让人们在当时积极地开发它。他们可以那样打碎东西!开发人员在开发时不必担心会弄坏东西。发展往往意味着实验
  • 让每个开发人员运行自己的服务器将使他们能够灵活地(比如)在断开连接的情况下工作。您有一个分散的版本控制系统(mercurial),但您的开发过程是高度集中的。即使你不想让人们远程工作,也要意识到当你的一台服务器停机时,每个人都会停机
  • 每当开发人员提交并推动这些提交时,您都可以直接将部署自动化到演示站点。这样,您的演示服务器上仍然有一个相当最新的源代码

  • TL;DR:保留演示服务器,但让您的开发人员在自己的服务器上工作。

    是的,更好的解决方案可能是为每个开发人员设置一个本地服务器。这可能会给您带来不便,因为您显然习惯于共享服务器,但请考虑:

  • 如果您真的对使用一台服务器作为演示服务器感兴趣,那么最好不要让人们在当时积极地开发它。他们可以那样打碎东西!开发人员在开发时不必担心会弄坏东西。发展往往意味着实验
  • 让每个开发人员运行自己的服务器将使他们能够灵活地(比如)在断开连接的情况下工作。您有一个分散的版本控制系统(mercurial),但您的开发过程是高度集中的。即使你不想让人们远程工作,也要意识到当你的一台服务器停机时,每个人都会停机
  • 每当开发人员提交并推动这些提交时,您都可以直接将部署自动化到演示站点。这样,您的演示服务器上仍然有一个相当最新的源代码

  • TL;DR:保留演示服务器,但让您的开发人员在自己的服务器上工作。

    我认为,您必须认真地重新思考所使用的工作流,因为每个开发人员的LAMP只略优于现有的编辑站点

    • 我看不到Bitbucket在严肃的企业发展中的位置——内部资源至少更易于管理
    • 我看不出为什么不将Staging Mercurial server(伪中央)与Staging internal LAMP server(您现在拥有并使用的)一起使用
    我可以想象至少有两种可能的选择(快速、肮脏、想法草案、不准备使用的解决方案),它们都是基于

    不易管理,实施速度更快 每个开发人员都有自己的本地repo钩子,在(每个?)提交后,该钩子导出他的提示,并将副本导出到相关的站点空间。工作流:提交-内部站点上的测试结果

    优点:容易、快速地实施

    缺点:无法防止(由于分布式特性)被其他开发人员的代码覆盖测试代码

    易于管理的部署,更难实施和管理 LAMP服务器也变成了Mercurial服务器,它承载所有站点repo的“中心”克隆,仅由开发者本地repo推送更新。此服务器上的每个repo必须获得两个挂钩:

    • “推前”检查,是否允许现在推,或者站点被以前的开发者“锁定”
    • “post push”,导出副本接收数据,并执行挂钩1的控制功能:根据条件(讨论主题)锁定/解锁推送至回购
    工作流程:提交-推送-测试结果-使用特殊(移动)标记标记标记WC-提交标记-将解锁更改集推送到repo

    优点:易于管理的单点测试

    缺点:推送工作流和推送阻塞可能导致延迟。需要安装、配置、支持其他服务器。changegroup和pretxnchangegroup钩子的复杂性

    解决方案2的最终注释和提示:我认为(未测试),特殊标签(带有-f表示在变更集之间移动)可以用作解锁标志(书签将不满足“手动移动”的条件)。即开发人员通信