DVCS在远程服务器上工作

Han*_*rén 2 git version-control mercurial bazaar

我的工作场所正在考虑转向现代(D)VCS,这是我正在推动的.

我的老板正在考虑这个想法,当前的工作流程是拥有一个集中的存储库,每个人都可以在任务完成时提交/合并他们的更改,在处理任务时,每个开发人员都可以拥有自己的分支来处理和提交.

问题在于,他不太喜欢人们在工作站上只有代码,直到将更改推送到共享存储库中.这是因为磁盘故障等.

他希望看到的是,每个人在服务器上都有自己的分支,当你在本地工作站上提交时,它会自动更新.

是否有任何DVCS以易于设置的方式支持此功能?

请注意,我个人认为每个开发人员都可以完全接受通过例如将更改推送到远程服务器上的专用分支来负责备份代码.这可以手动完成,也可以使用cron脚本自动完成.

Ry4*_*ase 5

仅仅因为"我们太"因素:这在mercurial中是可行的,因为它在bzr和git中.只需使用一个提交钩子,在可用时推送到更中心的仓库.像这样的东西:

[hooks]
commit = hg push ssh://path/to/individual/developer/repo
Run Code Online (Sandbox Code Playgroud)

我要注意的一件事是,通过钩子强制实施这一点,你可以推动中央回购对个体开发者有吸引力,你会发现他们自己做.我做过的让人们投入/推动(每天/每小时)的事情:

  • 确保他们有一个他们可以推送的回购,没有关于编译/测试传递的期望 - 如果你愿意的话,检查点回购
  • 让他们轻松地在中央服务器上建立他们选择的回购的持续集成构建 - 如果它是三次点击 - 他们可以轻松地为他们的个人分支机构开始构建变更,那么他们将会推动每个更改只是为了看到测试套件运行
  • 不要因为拥有冗长的历史而羞辱他们 - 良好的DVCS使用需要大量的拉/合并/推送周期.如果你让他们使用rebase或者折叠将15个合并组合转换为每个特征/ bug的一个变更集,那么他们就会被激励保持本地化,直到他们准备好拉动/合并/推动整个事物
  • 在公共场所运行一些非评判性指标.没有什么比通过代码行对开发人员进行排名更严苛和愚蠢,但是可以注意到的事情,无论是来自所有repo RSS提要的聚合RSS提要,还是提交快速"X推送变更集Y进入回购Z的提交@电子邮件别名" "每当有人推动时的消息.这很好,因为人们总是喜欢在他们的额外工作时间有点阳光,并且在会话结束时"推动"得到了.