我已经获得了修改我公司在线工作的风险管理程序的巨大任务.
由于我们没有备份,也没有保护我们的数据,所以我决定,像任何参与专业编程的人都应该已经在做,我们将通过源代码管理来保护我们的工作.我目前在Git这样做的基础上,但是其他人没有使用源代码管理,最终我们失去了源代码管理提供的许多好处.我宁愿我们有一个系统,每个人都使用Git,并执行规则,如果它不是源代码管理,它不会停留.显然,我们将需要一个备份计划,但作为一个开发人员,我想首先要做的是在获取备份解决方案之前整理编码方面的内容 – 显然,任何建议都不止于此.
我们运行一个带有sql Server 2005后端的ASP.NET网站,运行Sitecore作为我们的CMS选择.在理想的世界中,我希望将CMS站点的所有变更部分都包含在源代码控制之下,包括数据库.
目前,我知道这不是最好的想法,我为Sitecore内建的所有sublayouts运行一个解决方案.这是源码控制,感谢Git我已经能够添加分支并推出新功能并轻松修复错误(使用Git-flow作为我的工作流解决方案).我仍然是Git新手,但是我没有在提交之外管理任何东西,忽略某些文件等.
此外,我还要使用源代码控制来获取源代码控制下的数据库内容.据了解,您可以将Sitecore内容项目序列化为文件系统中的一个巨大的树(如果我记得正确,保存为.item文件).如果这是理想的解决方案,我也希望将它们添加到源代码控制中,尽管我不知道文件系统的确切位置.我的文件系统现在是这样的:
- Data (Logs,indexes,etc - is this needed to be in source control?) - Source (Helper files,although occasionally modified) - Website (Containing all the files I edit,and other essential Sitecore stuff)
如前所述,我目前的存储库仅在我的系统上,它由一个单一的解决方案文件夹组成,包含一堆.ascx,.ascx.cs,.ascx.cs.designer和奇怪的.aspx文件.这样做会使我的生活更容易上传,就像在
我想要输入的是对所有开发人员进行管理的理想方式.尽管使用DVCS,我宁愿将实时服务器视为主存储库,并且所有其他开发人员都可以将其从其中进行推拉.我们将使用git-flow workflow solution,因为它符合我们的发展方式.我很担心的是,正确地设置它,而不会破坏目前在没有备份的服务器上的一个非常昂贵,高流量的站点.
关于服务器上存储数据的技巧和建议,有关如何处理Sitecore中的序列化数据的指导,以及如何将源控件本身用作备份到单独的存储库的方式将受到欢迎.这是我第一次为现场网站建立源代码管理系统/工作流程,所以对我最好的工作做出的任何指导和建议将不胜感激.
编辑:我将为此收益,尝试获得更多的关于人们如何处理Sitecore的指南.
为了澄清自己,我不是在寻找一种备份我的工作的方式,而是一种方式,以便许多开发人员可以处理它,并确保网站上的代码是最新的中央存储库.例如,我之前已经引用过,我将使用git-flow来管理我的工作流.原始库存将存在于共享服务器上(有时可能是测试环境),并且所有开发人员都将有克隆来处理和推送.从这里,我想能够将更改从共享驱动器上的原始备份推送到实时服务器,如果发现错误,可以重新启动.我也想在我的回购中加入序列化的内容.
解决方法
好的,让我扩大我原来的想法,当我们有更多的背景信息.既然你说你只有一个Sitecore的许可证,而且不能有一个单独的测试服务器等等,我们总是可以稍微修改一下,并且仍然会达到同样的效果.
如果您在同一台服务器上安装了几个存储库来运行Live Sitecore?如果您可以设置Sitecore在同一文件系统上使用不同的根/存储库,例如您将URL更改为http://yoursite.com/blahblah/test,以便在测试模式下运行Sitecore.这取决于您当然具有什么样的许可证,即如果它与特定机器绑定.无论如何,您可以在将这些内容合并到主服务器并让其生效之前,可以在另一个分支(例如,测试库中的开发分支)中测试您的网站.
所以你可以在服务器上放置一个裸机,每个人都可以从中拉出来.并且您可以在同一台服务器上有两个额外的非裸机器,一个在主分支检出,另一个与开发分支签出.通过ssh登录,您可以在测试库中轻松运行“git pull”,方法是测试Sitecore站点测试版本上的新功能.当您对变更感到满意时,合并成主人并按照您的裸购物进行掌握,并以相同的方式更新现场回购.
我想您需要尝试找到一个方法来拥有两个版本的网站,以便您可以在更改之前进行测试.
原帖:
我强烈建议您将实时服务器与当前正在使用的服务器之间进行分隔,即将您的工作(作为集成存储库)的工作推送到另一个存储库.这样,您可以将代码集中在本地(您的组织本地)之前,然后将其推送到实时服务器,因此没有人偶然将代码/数据库/任何直接推送到实时服务器.
我还建议您备份中央存储库的数据,换句话说,git应该用作版本控制系统,而不是作为备份系统.即使git可能会失败,并导致损坏的存储库,然后如果您还没有任何备份,您将被抽烟.
此外,如果可能的话,尝试将实际的站点内容与在数据上工作的逻辑分开,即尝试保持良好的模型/视图概念.这样,您可以轻松地使用独立于代码的测试数据库设置测试环境,并且不需要提交数据库.除非你真的想提交他们当然:)