Subject: Re: [DISCUSSION] Growing the Git community

From: Jakub Narebski <[email-masked]>
Date: Fri, 04 Oct 2019 14:39:28 +0200

Derrick Stolee <[email-masked]> writes:
> On 9/25/2019 9:36 AM, Pierre Tardy wrote:
[...]
>> And why restrict on DVCS?
>> Isn't it admitted that the distributed version control is nowadays
>> much better in term of software productivity?
>> Is there some use cases that "traditional" centralized VCS are better
>> on, and on which we gave up as a goal?
>
> My intention was "let's be the best at what  Git is good at: distributed
> version control." There are some legitimate reasons why someone would
> pick something like Perforce instead.
>
> Some things, like *file locking*, are just easier in centralized systems.
> I know that Git-LFS created a locking mechanism that pushes even further
> toward a centralized system. However, it relies on users following a
> very careful pattern (lock, pull, edit, push, merge, unlock) to avoid
> conflicts. Further, that only works if you are on a common trunk.
> Release branches or forks do not have this concept.

Well, there is (or perhaps was, as the latest release is from 2013) DVCS
named Veracity that tried to be better than other DVCS in corporate
environment.  It did include file-locking:
  http://veracity-scm.com/
  https://ericsink.com/vcbe/html/veracity_locks.html

But perhaps there would be a better solution to handling file types that
do not support conflict resolution at all than file-level locks: see the
“Git for games: current problems and solutions” presentation by John
Austin at Git Merge 2019:
  https://www.youtube.com/watch?v=K3zOhU3NdWA&list=PL0lo9MOBetEFqBue4vNcTEnkBjgIQU1Q3&index=8&t=0s

Though the tool mentioned here had not seen any significant development
since Feb 1, 2019 (well, at least in the public repo at GitHub).

>From Git Rev News: Edition 48 (February 27th, 2019)
  https://git.github.io/rev_news/2019/02/27/edition-48/

GR> John Austin, game studio technical lead from A Stranger Gravity and
GR> Funomena in “Git for games: current problems and solutions” talked
GR> about major problem with using Git in game development workflows,
GR> namely many and large binary files, for which file conflicts are
GR> lost work (minor change, like adding voiceover or changing equalizer
GR> settings results in large changes to files). File locking is one
GR> possibility, but it doesn’t play nicely with Git – it is inherently
GR> centralized. He introduces a new tool, [Git Global Graph][1] (a work in
GR> progress), which can be used to check at commit time if it wouldn’t
GR> create a divergent version of a file. The idea is that there should
GR> be only a single path through commit graph with changes to binary
GR> files.

[1]: https://github.com/Kleptine/gitglobalgraph

Best,
-- 
Jakub Narębski