2012-01-29 42 views
0

有人知道混合版本控制和同步系统吗?混合版本控制和同步系统?

我目前是一个快乐的mercurial用户,但我的项目通常包含文件的混合。

大多数这些(代码,文档,...)我想受版本控制。这就是我使用mercurial的原因。

但是,在极少数情况下,我有我想在我的工作副本之间同步的文件,但是不是版本控制。

例如,我版本控制我编写的代码来做图像处理。这段代码可以产生一大堆输出图像,我希望同步,所以我不必记得在我的各种计算机上洗牌,但控制这些版本没有意义。为了说明 - 我知道扩展到mercurial如bfilesbigfiles,这对我的图像示例很方便,但我只是想知道是否有人知道如何处理这种替代方法。我只想要一个系统,我可以告诉“版本控制除了那些应该同步但没有历史记录的所有文件”。

干杯!

编辑:我可以做类似添加hg marksync <filename>是添加<filename>到文件列表进行同步,然后再加入一个钩子hg push/hg pull会(说)运行rsync(或两者同步工具)在后台,但我想知道是否有一个不太可靠的解决方案(我认为bfiles/bigfiles沿着这些线做了一些事情)。

回答

1

版本控制系统(任何)不关心

  • 没有版本的数据同步
  • 除了默认pathes

如果你想要同步任何文件 - 使用专门为此任务设计的工具:fe rsync的

+0

我知道,我目前使用rsync洗牌周围的文件。但是我特别是在一个系统上同时管理同步和版本控制 - 也许是我可以编写的一组别名,这样我就可以输入'svn/hg/git commit'(或其他),它也可以在列表中自动执行rsync我已经指定为要同步的文件的文件。 – 2012-01-30 00:44:52

+0

@ mathematical.coffee - 你不能一组命令组合成在颠覆新的,但可以定义新的Git别名|善变 – 2012-01-30 01:23:38

+0

是的,我知道。我考虑添加一个'hg marksync',它将文件添加到.hgignore中,并以某种方式将其添加到要同步的列表中,然后在'hg push/pull'中添加一个钩子以同步文件或类似内容。我只是想知道是不是有点不好意思。 – 2012-01-30 01:36:33

0

该代码会产生一大堆,我想它输出图像的已同步

这是数据或代码的一部分吗?

如果数据:不在您的版本控制系统中,只是不要去那里。如果它是你的代码的一部分(如布局图像),请检查它们。这些是通用接受的唯一方法。

数据的一个很好的解决方案是同步或生成它们。因此,您可能在部署到服务器后添加一个步骤:GenerateImages()。

编辑:除了由线程启动发表的意见:

如果图像数据,你需要处理这些不同的系统上不会去想版本控制您的代码。这是无关的。

开始更新映像代码,将其签入版本:这将是有意义的我,在处理的顺序步骤。然后部署(是的这是部署)更新后的代码到计算器。现在代码已经完成。

那么你有多少排排坐应该处理的任务。就像处理图像一样。因此,从cruncher本身(可能有一些队列发生在那里)或中央调度程序开始处理。

然后你的结果在当地的捣弄。现在,这些数据必须发生,所以这也是您软件的一部分。决定是否让cruncher将它们发送到某个中央存储器,工作站或其他位置。让软件处理它。在阅读您的问题时,这是最难的部分。从FTP /网络传输到特定的存储解决方案,许多解决方案都是可能的。愿意帮助,但需要更多关于这些部件的真实问题,数量,尺寸等信息。

如果图像处理器的新更新的版本使旧生成的图像过时的实施,同样在您的代码,通过例如附连生成文件的属性,一个单独的文件夹或其他指示。这样你可以在更新后请求cruncher重新生成任何过时的文件。

+0

我在我的问题中解释了这些是数据,并且我不希望*将它们放入我的版本控制系统中。但是我想要同步它们。因此,我的原始问题 - 我想版本控制一些(例如代码)和同步其他(输出数据)。并非全部或其他。这不是为了部署情况,这是我在工作中使用的多台计算机上跟踪我的代码和结果的方式。我使用一台计算机*专门用于在另一台计算机上进行所有计算,因此我希望将输出数据从数字计算器同步回到其他计算机。 – 2012-02-08 10:45:44

+0

感谢您的回复。我没有看到数据版本之间的任何关系,除了可能会在部署新代码时过时的数据。我在答案中加入了一个完整的部分,认为这至少有助于使问题更清楚。至少对我而言,图像是数据的事实并不清楚,因为图像生成也可以在非数据图像上完成,而这些图像在部署时非常规则。因此,请在编辑中提供有关同步问题的更多信息。 – 2012-02-08 11:11:28

+0

重新编辑,我完全理解你,我同意你的分析,这就是我目前所做的。 “决定你是否希望cruncher把它们发送到一些中央存储......让软件处理它” - 这就是我的问题所在。我很想让我的代码版本控制程序也处理图像的同步。我不想要一个单独的软件。如果我有一个'hg更新',它为版本化代码运行真正的'hg update',并且为.hgignore中的所有比特'rsync ....',那就好了。我只是想知道是否有人知道这个功能。 – 2012-02-08 12:36:26