Working on binary files - Locking mechanism

John W jwdevel at gmail.com
Mon Nov 27 00:05:47 UTC 2023


Hi Yannick,

I'm not aware of any currently-maintained extensions for file locking.

The links for lock-related extensions on the wiki[1] all point to
now-defunct bitbucket.org addresses. You can find the old source, but
from reports it does not work as-is with modern Mercurial.

You may be interested in this email thread from 2021:
https://lists.mercurial-scm.org/pipermail/mercurial/2021-January/052556.html.

Separate from file locking, of course, is the "large files" concept.
There is the built-in 'largefiles' extension (though it does not get
much development, from what I can tell), and there is a newer "LFS"
extension, which would use the git-lfs protocol.

Note: the git-lfs protocol supports a notion of file locking, but it
is not implemented in Mercurial yet (at least as of that mailing list
thread; not sure today).

Much as I am loathe to recommend it, you might have better luck at
present using git with git-lfs (:

[1] https://wiki.mercurial-scm.org/LockExtension

-John

On 11/23/23, Yannick CHARLES <yannick.charles at gmail.com> wrote:
> Hello !
>
> I've been using Mercurial for several years now, mainly for version
> tracking of source and plain text files, often in single user workflow.
>
> Now in my work as a mechanical engineer I come to meet new use-cases that
> challenge my usual workflows:
> -a lot of files are binary (e.g. CAD and engineering models), but they are
> indeed working files so we have somehow to track or backup them;
> -these are non-mergeable;
> -there are dependencies between them (e.g. drawing and assemblies points on
> part files).
>
> All this makes collaboration not straightforward (unless with heavy and
> expensive tools that also have shortcomings). We usually deal with it in
> our lab by having a local network folder with our files, frequent automatic
> backup, and communication so that we make sure that 2 people don't edit a
> file at the same time...
>
> Now I've started to use Mercurial in a part of the project I'm working on,
> and it allows me at least to save revisions more cleanly than with
> snapshots, store history, etc. I could also pull a local copy if I want to
> explore a particular revision (updating the shared repo may break the work
> of other contributors though we are few to use this folder).
>
> I was wondering if we could push things one step further:
> -surely we could call hg from our CAD package through macros (maybe hg
> commit, or hg add all children files for a given open product)
> -all this accessible to people unfamiliar with coding or versioning
> software (though a repository could always be accessible to more advanced
> users)
> -make use of distributed paradigm so that we can work on local clones and
> avoid important data transfer when working remotely
> -improving our collaboration workflow
>
> For the last point, though I never felt the need for it with source files,
> a locking mechanism could be greatly useful on non-mergeable files. I've
> seen that there have been some extensions implementing this. Does anybody
> have experience about using them, and are they still compatible with
> Mercurial version 6.x ?
>
> Sorry for being long and off-topic about the context and use case... If
> anybody has thoughts to share on it, be welcome.
>
> Many thanks in advance.
> Best regards,
> Yannick CHARLES
>


More information about the Mercurial mailing list