rsync push - 可以使rsync像“hg push”一样易于使用

时间:2014-07-08 01:09:57

标签: git mercurial rsync dvcs

问:有没有办法使用rsync或类似的工具,以便你可以像在DVCS中“git pull”或“hg push”一样轻松地“rsync ++ pull”或“rysnc ++ push”?

这样您就可以指示目录树是rsynced,例如通过RTREE_ROOT中的rc文件,到特定的远程系统

然后,如果你深入这样一棵树,你只需输入“rsync ++ push”或“rsync ++ push remote-system-name”

并且假设的rsync ++工具将爬行文件系统树,直到找到RSYNC_ROOT,一个标记的目录,例如,用rc文件。

而不是必须输入类似的东西(根据你的位置改变_)

rsync -r ../../../Rysnc_Root_Name remote-system:path/to/rsync/place/on/remote

能够做到

rsync++ push remote-name

甚至

rsync++ push

当存在默认推送目标时

背景

我经常使用分布式版本控制工具,例如git,mercurial(hg)或bazaar(bzr)。

我发现保持DVCS树同步比使用rsync容易得多:一旦设置,只需说“git push”或“hg pull”,可能后面跟着“hg update”。

即。 DVCS可以找到当前树的根,并可以将其映射到需要更新的远程树或repos。

AFAIK,rsync不会这样做。

但是我可以把rysnc想象成一个零级DVCS - 好吧,一个分布式复制服务。不幸的是,命令行界面不允许感知这种令人愉快的小说。

有时我使用DVCS时我真正需要的只是rsync,只是为了更容易输入。但是我必须确保远程用户知道在远程目标目录树中使用“hg update”。


我认为这有一些相当通用的方面,可能在多种工具中很有用,而不仅仅是rsync和DVCS工具,如git / hg / bzr:

(1)在目录树中,找到一些“根” 例如通过走......,.. / ..,寻找像.hg文件等特殊标记。 例如由l

(问题:嵌套。例如,我经常在bzr repos中使用hg repos,反之亦然 - 这基本上是一种尝试创建嵌套subrepos的方法,这是很多DVCS工具无法处理的。很可能允许跳过某些级别,或合并。)

(2)找到了这样一个根,指定愉快,人性化,短暂, 例如将名称如“remote”映射到“ssh:// host:port // path / to / associated”

或使用默认值或默认操作(如default = pull或default-push)。

(通常将根目录中的东西与〜/ .toolrc中的东西合并)

monadic版本是找到一个root,并且可能在给定root的情况下找到一个可能合并的配置文件。

二元版本观察到,通常命令涉及这样的根下的一个directiory树,以及配置文件中指定的另一个目录树。

多字节版本可能允许您推送到多个遥控器。

我们已经拥有遵循这种模式的DVCS工具:git / hg / mercurial。

我的直接愿望是一个类似rsync的rool。

如果你考虑一下,非分布式版本控制工具,如CVS和SVN,以及无数的RCS包装器,解决了“如何在树中找到每个xdir的链接目录”的“如何找到遥控器”。 (正如我很久以前在一篇论文中指出的那样。)

还有哪些其他工具可以从中受益?

??将相对符号链接转换为绝对符号的工具怎么样,反之亦然:例如复制树,使用树中所有内容的相对符号链接,以及外部所有内容的绝对符号。

0 个答案:

没有答案