Thanks folks, I am digesting all you have said. Now the command line I can do (I'm a programmer) but the secretary here I doubt. So is there at GUI interface for this? Does it work on Windows systems? Thanks, Paul ---- Stefan Beller <sbeller@xxxxxxxxxx> wrote: > Just because Git allows distributed workflows, doesn't mean we > should only focus on being distributed IMHO. > > The question for content not being mergable easily pops up all > the time. (Game/Graphics designers, documents, all this binary > stuff, where there is no good merge driver). > > I could imagine a "git lock" command which looks like this: > > git config lock.centralServer origin > git config lock.defaultBranch master > > git lock add [branch] [--] <path/to/file> > git lock remove [branch] [--] <path/to/file> > git lock ls [<branch>] > > And the way this is implemented is roughly (unoptimized, just showing > how you would achieve this with todays command set): > > git fetch --depth=1 $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch) > git checkout refs/locks/$(git config --get lock.centralServer)/$(git config --get lock.defaultBranch) > switch(option) { > case add: > if exist <path/to/file> > return -1 > else > echo $(git config --get user.name) $(date) > <path/to/file> > git add <path/to/file> && git commit "add new lock" > fi > case remove: > if exist <path/to/file> > # todo: check if the same user locked it before > rm <path/to/file> > else > return -1 > fi > case ls: > ls -R . > } > git push $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch) > git <restore working tree, branch> > > That said you could just manipulate the git objects directly, no need > to check out to the working dir. > > The server would only need to allow pushes to a refs/locks directory and be done. > the client side would need to have a plumbing command, so you could easily integrate > a git locking to your application if you don't want to provide a merge driver. > > Thanks, > Stefan > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html