这样您就可以指示目录树是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的链接目录”的“如何找到遥控器”。 (正如我很久以前在一篇论文中指出的那样。)
还有哪些其他工具可以从中受益?
??将相对符号链接转换为绝对符号的工具怎么样,反之亦然:例如复制树,使用树中所有内容的相对符号链接,以及外部所有内容的绝对符号。