DVCS如何帮助科学编程?

时间:2009-04-27 04:35:30

标签: git dvcs scientific-computing

我正在研究DVCS(像Git,Hg,Bazar这样的人)如何在科学编程过程中提供帮助,特别是研究生。我认为自从我编程了几年以来,我已经处于相当有利的位置,目前正在开始自然科学硕士课程。目标是在一两个月内对此进行简短介绍。

据我所知,除了源控制的明显优势外,DVCS目前还为研究生的日常生活提供了以下改进:

  1. 分支:

    这是最重要的一个。从观察DVCS实践可以看出,廉价分支主要是鼓励对新功能进行实验。科学编程完全是关于实验的。可以创建不同的分支来调整参数或算法。这一点尤其重要,因为大多数科学代码在他们的一生中都没有看到过一次重构(大多数研究生甚至都不知道它是什么),所以去不同分支的能力会给典型的疯狂带来一些方法。快速提交也可能意味着使用提交注释作为实验室笔记本的替代品。计算结果可以标记为特定的提交哈希码,以便进行可重复的研究。

  2. 推送到服务器:

    由于现在大多数科学代码都是在某种集群上运行,因此DVCS可以用作某种更高级的Rsync,许多人已经将其用于将“生产”代码推送到HPC集群。这与分支相结合,可轻松运行多个版本的代码,而无需离开

  3. 论文合作:

    需要我说更多吗?具有多个作者的论文与小型开源项目完全相同。当作者都在LaTex中写作时,论文上的协作应该是一个自然的选择,如果用像Word这样的写作来完成写作会带来额外的复杂性。这是提交评论可能发挥更大作用的地方。

  4. 我的问题是,您认为DVCS能为科学程序员做出什么贡献?我看到很多关于转向社区源代码控制的讨论,但大多数人仍在研究Subversion。从我粗略的笔记来看,听起来DVCS应该是新毕业生的完美工作流程范例。我的想法有缺陷吗?或者科学编码是否仅仅落后于甚至听说 DVCS工具?


    相关:

3 个答案:

答案 0 :(得分:4)

培训是一个真正的问题。我认识很多粒子物理学家(大型编程项目的大科学),他们对源代码控制的全面了解是如何运行cvs checkoutcvs updatecvs commit的幼稚版本。

是的,CVS。我认识一位软件组负责人因为这些人而推迟了Subversion。

在下一级技能中,他们也知道diffstat命令以及如何指定分支或标记,但可能会避免创建或合并分支。

如果您计划推出DVCS,请计划密集的持续培训和支持计划。科学家(或至少是物理学家)通常几乎没有接受过计算机科学的正规培训,并且可能只有最模糊的软件过程概念。

答案 1 :(得分:2)

关于你的要点:

  • “DVCS的明显优势”:值得重申的是,特别是在学术环境中,对于允许外部连接具有潜在严格的IT规则,DVCS允许使用本地存储库。这意味着您不必与一个中央仓库“连接”以访问项目的完整历史记录,这就是DVCS对科学程序员的主要贡献。

但这也意味着你必须有某种政策才能让任何特定的工作“聚集”并合并到一个存储库中,这并不意味着只有一个“中心”基础:人们可以想象几个大项目的几个中央回购。不过,这需要管理(不要低估)。

由于您的主要第一点,“整合”过程可能非常困难:

  • 分支:学生需要 branch carefully (因为它很容易)。我看到我的分支名为'toto','Monday','myName',......:一旦发布到另一个(更中心)的回购中,我们该怎么办?如果要合并20多个分支以完成一个公共代码,那么这个过程很快就会出错。

快速评论您的其他观点:

  • 部署(你称之为“推送到服务器”):是的DVCS可以用于某种部署,但这意味着你已经组织了你的repo以包含某种 "release component" (您要在服务器上推送的文件集)并且您已将其版本化。并且发布管理包括许多其他步骤,这些步骤不能全部记录在DVCS中,例如,在变量化过程中,您将配置文件中的变量替换为适合目标服务器的实际值(端口号,本地路径,......) 。您可以尝试管理直接通过分支机构评估的配置文件,但根据我的经验,它很快就变得太复杂了。

  • 协作:这不是DVCS保留的。 (VCS也提供它们)。请注意,对于某种格式(Word文档),其内部修订系统可能更有效。

答案 2 :(得分:1)

DVCS用于科学编程的一个大问题是二进制数据。通常情况下,科学编程需要巨大文件的输入/输出,并且在我知道的每个DVCS(bzr,hg,git)上非常快速地杀死性能。这是svn目前要好得多的一个领域。

我认为DVCS对论文也很有用,但这意味着你的合作者也知道DVCS。