Articles of 版本控制

我如何版本控制镜像上游存储库?

我pipe理许多跨多个环境(dev,qa,staging和production)的服务器。 为了帮助pipe理这些,我们在本地web服务器上为我们的应用程序提供了多个存储库(例如app_1_el6,app_2_el7等)。 我们还镜像了几个上游回购提供了我们的自定义rpms(如EL回购[1],EPEL [2]等)的依赖关系,以减less软件包的下载时间。 目前,一个cron作业同步我们的本地和上游存储库。 不时,我们会提出一个更新,导致一个问题(例如与我们的软件包不兼容)。 这最终导致了很多的痛苦,我想避免。 我最喜欢做的是为上游回购的本地镜像创build某种版本控制。 例如,我想确保,如果在上游的repo中引入了新的软件包,这会破坏我们的自定义RPM,那么我有办法回滚或以某种方式隔离该软件包。 最好的办法是什么呢? [1] http://elrepo.org/tiki/tiki-index.php [2] https://fedoraproject.org/wiki/EPEL

版本控制和备份,哪个组合?

我是唯一的开发者,我有3台电脑。 另外我的一个朋友有一个帐户,但从来没有使用它。 我目前的设置是GIT +我自己的临时备份工作,克隆存储库,压缩,gnupg它,并将其发送到远程ftp。 目前为止,我的源代码/ docbook / xml文件+更小的二进制文件(主要是图标+用于docbook的一些图像)工作得非常好。 不过,我最近参与了一个Flash游戏项目,并为此创build了一个存储库,但是Flash FLA文件非常庞大(我见过+70 MB)。 和git重新包装一个低窗口大小不能再完成。 进一步我发现我的一些文件使用回车而不是换行,GIT不喜欢区分这些文件。 当我创build存储库时,我应该将它设置为在提交时自动将CR转换为LF。 但是我并不知道这些问题。 出于绝望,我尝试了Mercurial,但它的最大文件大小是10 MB。 我想也许把我的项目分成二进制文件,并保持在颠覆,因为它似乎与二进制文件确定。 和GIT的源代码。 但这将是一项艰巨的任务,听起来像是一个坏计划。 你使用什么版本控制系统? 你如何备份? 你怎么处理你的二进制文件?

如何在我的Mercurial HGWEB中启用ZIP / TAR / BZ2下载button?

我最近在我的服务器上运行了Mercurial,通过Apache共享。 当我通过网页浏览到回购站时,我看到我的存储库列表与Atom / RSS链接,但没有下载button。 我的问题是,如何启用紫色的“ZIP”,“TAR”,“BZ2”下载button(例如: http : //hg.pablotron.org/ )? 我一直在试图find这个文件,但一定要看所有错误的地方。 我使用Apache 2.2.14在Ubuntu 10.04上运行Mercurial v1.6.3。 谢谢!

颠覆后提交钩子:打印用户可以看到的错误消息?

我有一个用Subversion 1.6.x创build的Subversion版本库。 这个仓库有一个post-commit钩子,每次用户检入文件时都会执行一个动作。 有时这个提交后的钩子失败,并且任何错误消息都被简单地发送到以太网中。 我可以创build一个post-commit钩子为用户输出一个错误信息,以便用户知道post-commit钩子失败了吗?

补鞋匠版本控制?

我使用Cobbler为主机安assembly置PXE引导。 什么是我应该保持在版本控制下的补鞋匠组件,以便我可以查看主机安装的具体情况? 片段,kickstart文件,configuration文件,存储库的变化都可能掩盖过去发生的事情。 版本控制应该如何与Web界面交互?

如何在版本控制登记之前强制执行木偶清单和模块语法检查?

我正在为我们的puppet模块和清单部署版本控制。 我想强制执行一个工作stream程,需要在检入更改之前进行puppet模块和清单代码检查。 这将是有用的,因为它将防止推动代码改变,例如语法错误或更致命的东西。 我最初的想法是部署一个完整的puppetmaster实例,其中可以完成清单和模块更改,并将其作为自身的一个节点。 然后可以用service puppetmaster restart && service puppet restart检查语法,并检查日志是否有错误。 我可以在清单和模块推送脚本中编写该工作stream程。 不过,我想这是一种更优雅的方式。

版本控制系统具有较less的重复数据

我们有一个本地configurationpipe理系统,我们希望以一种简单的方式添加configuration文件版本。 我的第一个想法是svn(或类似),但我关心在一个位置创build一个回购,只是在同一个系统上的另一个位置检查出来。 在这种情况下,我们没有使用远程或甚至多个结帐。 是否有一个软件版本控制系统位于一个位置(元数据+工作副本),将只存储增量? 我们的一些configuration节点有大的压缩包和二进制安装程序。

我应该将部署设置保存在单独的存储库中吗?

我正在学习Salt Stack,将我的Python应用程序部署到AWS上的各个生产阶段。 现在我把所有的源代码和盐状态放在一个大的仓库中。 在使用我的源代码保留minion状态文件时是否有任何实际或安全考虑? 或者我应该把它们分开,为什么? 如果我将我的状态文件移动到一个单独的盐状态回购,我应该在哪里保留我的master和minionconfiguration文件,或者不属于版本控制?

多用户bzr服务器

我目前正在调查是否可以在类似于gitolite的git中使用bzr。 这意味着一个单一的Unix帐户,不同的用户通过他们的SSH公钥pipe理。 我很乐意将它与gitolite整合,在这种情况下,可以委托用户pipe理和创build合适的~/.ssh/authorized_keys 。 这将涉及身份validation。 我担心的是授权。 据我所知, bzr serve开箱即用只有–directory标志来提供访问控制。 这适合于为每个用户提供他或她自己的一套存储库,或者将用户分配给组,并为每个组分配一组固定的存储库。 多花一点工夫,可以为每个用户使用一个目录,但是使用符号链接来允许多个用户共享访问存储库。 尽pipe如此,这还远远less于gitolite能做的。 使用这种方法,不可能向个别用户授予对某些其他存储库的只读访问权限。 也不可能防止覆盖推送,或者在用户的目录中创build新的存储库。 可能这些function还没有实现。 在一个相关的堆栈溢出问题,我正在问自己实现这个方法。 这里关于服务器故障我正在专注于现有的解决scheme。 是否有任何现成的解决scheme,赋予bzr serve更精细的访问控制比简单的目录限制? 一个完全集成的解决scheme,如gitolite将是最有趣的,但即使一些扩展可能被configuration为解决我提到的问题之一,很高兴知道。

在哪里安全地存储源代码?

我们公司已经使用版本控制,并且已经在做日常的备份。 但是,我的上司担心在多重抢劫或某些自然灾害的情况下,将源代码保持在“足够安全”的地方。 我试图search谷歌的东西,我想最好的解决scheme将是一些在线备份服务。 你以前有没有遇到类似的问题? 你是怎么解决的? 如果可能的话,你能参考一个很好的服务来解决你的问题吗? 更新 :我们目前备份在2 DVD。 一个留在我老板家,一个存放在公司大楼内。