From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id C193882355 for ; Thu, 8 Feb 2018 16:50:50 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=hendrik@topoi.pooq.com; spf=None smtp.mailfrom=hendrik@topoi.pooq.com; spf=None smtp.helo=postmaster@april.topoi.pooq.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of hendrik@topoi.pooq.com) identity=pra; client-ip=69.165.131.134; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="hendrik@topoi.pooq.com"; x-sender="hendrik@topoi.pooq.com"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of hendrik@topoi.pooq.com) identity=mailfrom; client-ip=69.165.131.134; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="hendrik@topoi.pooq.com"; x-sender="hendrik@topoi.pooq.com"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@april.topoi.pooq.com) identity=helo; client-ip=69.165.131.134; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="hendrik@topoi.pooq.com"; x-sender="postmaster@april.topoi.pooq.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AczodIx0vveN66gMOsmDT+DRfVm0co7zxezQtwd8Z?= =?us-ascii?q?se0WIvad9pjvdHbS+e9qxAeQG9mDsrQc06L/iOPJYSQ4+5GPsXQPItRndiQuro?= =?us-ascii?q?EopTEmG9OPEkbhLfTnPGQQFcVGU0J5rTngaRAGUMnxaEfPrXKs8DUcBgvwNRZv?= =?us-ascii?q?JuTyB4Xek9m72/q99pHPfglEniaxba9vJxiqsAvdsdUbj5F/Iagr0BvJpXVIe+?= =?us-ascii?q?VSxWx2IF+Yggjx6MSt8pN96ipco/0u+dJOXqX8ZKQ4UKdXDC86PGAv5c3krgfM?= =?us-ascii?q?QA2S7XYBSGoWkx5IAw/Y7BHmW5r6ryX3uvZh1CScIMb7S60/Vza/4KdxUBLmhi?= =?us-ascii?q?cJOSAk/m/UhMx/g75Urw+jqBNx2IPUfJ2ZOeBicq/BZ94WW2xMVdtRWSxbBYO8?= =?us-ascii?q?apMCAegfMuZesob9vVoOrRijDgSxA+PvzTpIjWLx0K06zeshFxzJ3BYhH9INq3?= =?us-ascii?q?nUsNL1NL8VUeC01qXI1TLDb/RP2Tvn9IfIdRUhrOiKULltcsTR0VEiGgLBg1mK?= =?us-ascii?q?tIDoPjOY2v4Qv2WV8uZsT/+jhmAopgx3vzOh3N0jipPTiYIQ0l3E9Tt2wIIyJd?= =?us-ascii?q?CgUkF7ecSkEJpUty2AK4t2RdsiQ2ZpuCog0r0Gvpm7fDEQxJs7wB7fbuSLc4mO?= =?us-ascii?q?4h39SOacOTZ1iXZ/dL6ihhu/8VKsxvDyW8WpylpGsyRIn9bUunAIzRPT68yHSv?= =?us-ascii?q?Vn/kem3DaCzwDT5f9CIU8pj6rbKp0hz6UslpoUqUTDGS72lF/ujK+RcUUk4/Kk?= =?us-ascii?q?5PjgYrXjvpOcLZN7ihniMqQyncyyGfg3PRILX2if4Oi80Lzj/VblQLhRlf03kq?= =?us-ascii?q?zZsIjAKsgBp665BRVV0oc55BqlATemyodQoX5SJ1tAfFeDjpP1E1DIOvHxS/ml?= =?us-ascii?q?0Hq2lzI+5/3AMqfgAd3nKX/G2OPhcLBx8U9f4BY01ddeoYpTDahHK/X2DByi/O?= =?us-ascii?q?fEBwM0ZlTni93sD89wg9tHCDC/R5SBOaaXimemo+cmIu2CfogQ4WivN/894P+o?= =?us-ascii?q?lXg+gBkWeqz7hcJLOkD9JexvJgCiWVSpms0ISDlYog0mS+2skFqFSHhYYHPgB/?= =?us-ascii?q?thtAF+M5qvCML4fq7ogLGF233hTJROfGFCTEyLCXDpMZ2DXO5KYyWXcJds?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0C/AwDMcHxa/4aDpUVdHAEBAQQBAQoBA?= =?us-ascii?q?YMkggODQ4tijzSZbYVFAoJIBgUzFQECAQEBAQEBAQEBaiiCOCKCSgEFOk8LGAk?= =?us-ascii?q?lDwUYinmxT4UAg3eBegEBCAImhHmJAoVugnyCFCAFk2GQSgmVbw14gSaSIIsTj?= =?us-ascii?q?jU1I4FQMxoIGxU9gkeDegEIAYEQI44IAQEB?= X-IPAS-Result: =?us-ascii?q?A0C/AwDMcHxa/4aDpUVdHAEBAQQBAQoBAYMkggODQ4tijzS?= =?us-ascii?q?ZbYVFAoJIBgUzFQECAQEBAQEBAQEBaiiCOCKCSgEFOk8LGAklDwUYinmxT4UAg?= =?us-ascii?q?3eBegEBCAImhHmJAoVugnyCFCAFk2GQSgmVbw14gSaSIIsTjjU1I4FQMxoIGxU?= =?us-ascii?q?9gkeDegEIAYEQI44IAQEB?= X-IronPort-AV: E=Sophos;i="5.46,479,1511823600"; d="scan'208";a="312660585" Received: from topoi.pooq.com (HELO april.topoi.pooq.com) ([69.165.131.134]) by mail2-smtp-roc.national.inria.fr with ESMTP; 08 Feb 2018 16:50:49 +0100 Received: by april.topoi.pooq.com (Postfix, from userid 1001) id A7977C2BB1; Thu, 8 Feb 2018 10:50:47 -0500 (EST) Date: Thu, 8 Feb 2018 10:50:47 -0500 From: Hendrik Boom To: caml-list@inria.fr Message-ID: <20180208155047.GA14190@topoi.pooq.com> References: <20180208131150.GA81347@rxdmac.local> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [Caml-list] File synchronization implementation(s) in OCaml? On Thu, Feb 08, 2018 at 07:42:57AM -0800, Evgeny Roubinchtein wrote: > Thank you everyone for all the responses and pointers to artefacts and > papers. > > Cedric, that is an excellent point; thank you. My current intended use is > having the user edit file(s) on host A using a text editor, and, when the > user saves a file, having those edits reflected as quickly as possible in > the corresponding file on host B. So, my primary measure of performance is > the speed of update: I want the time between the events "the user, who runs > the editor on host A, has issued a command to the editor to save the file" > and "the contents of the file the user has just saved on host A and the > corresponding file on host B is identical" to be as low as feasible (there > is a mapping between file paths on hosts A and B). Sometimes, the user > will create a new file on host A; then the file's contents needs to be put > as quickly as possible into the corresponding location on host B. One > other consideration is that occasionally the user may have their text > editor save a number of files in quick (at least in human scale) > succession: for example, the user issues "M-x compile" in Emacs, and Emacs > offers to save all modified buffers before running the compilation: in that > case, the total time to propagate the changes to all modified file(s) > should be as low as possible. So, to summarize: > > 1. One-way synchronization is acceptable (I may find out otherwise with > experience, but, for now, I am willing to make that assumption) > 2. It is always known which file(s) have been modified. > 3. It is probably feasible to plumb through the information about what > part(s) of of a file were modified for each file from the text editor to > the updater, if that helps with the speed of the update. The editor > usually "knows" what has changed, because it needs to be able to undo the > changes. > 4. The relevant metric is the speed of the update. > 5. Sometimes changes to more than one file may be saved in quick (human > scale) succession. The relevant metric is still the speed of update to all > files. Unless your requirements are very different from mine, I suspct you want distributed revision management. The system I use for that is monotone. Once set up it's a lot easier to use than git. -- hendrik