Re: [PATCH] git-init: set up GIT_DIR/workdir if GIT_WORK_DIR is set
From: Matthias Lederhofer <hidden>
Date: 2016-06-15 22:42:59
Nguyen Thai Ngoc Duy [off-list ref] wrote:
Let users create $GIT_DIR/workdir themselves. Your way may be less confusing to you but might be more confusing to me because I _might_ expect a relative workdir setting (for example I move the repository and the working directory together to another place).
Well, without this patch you havo to do one of these:
/tmp$ mkdir repository working_directory
/tmp$ git --git-dir=repository init
/tmp$ git --git-dir=repository config core.bare false
/tmp$ echo ../working_directory > repository/workdir
or
/tmp$ mkdir repository working_directory
/tmp/repository$ cd repository
/tmp$ git init
/tmp/repository$ mv .git/* .
/tmp/repository$ rmdir .git
/tmp$ echo ../working_directory > repository/workdir
Where the second example is probably better because git init creates a
bare repository in the first case which might have more settings
different from a 'normal' repository (it actually sets also
core.logallrefupdates = true which probably should be added to the
first example).
With this patch you'd have to do
/tmp$ mkdir repository working_directory
/tmp$ git --git-dir=repository --work-dir=working_directory init
/tmp$ echo ../working_directory > repository/workdir
in case you really want a relative path.
Because the first two ways are so long I think git init should have
some way to handle this case.
I don't want to put $GIT_WORK_DIR 'as is' to $GIT_DIR/workdir because
$GIT_WORK_DIR is normally interpreted as relative path to the current
working directory and not relative to $GIT_DIR.
Perhaps we could add another flag to git init which will be used 'as is'
for $GIT_DIR/workdir:
git --git-dir=repository init --work-dir=../working_directory
Other things I can think of:
Add a --not-bare flag to git init:
$ git --git-dir=repository init --not-bare
$ echo ../working_directory > repository/workdir
Tell the user what to do in case the path should be relative:
$ git --git-dir=repository --work-dir=working_directory init
You specified a relative working directory and git has
automatically expanded this to /tmp/working_directory. If you
prefer a relative path you can do:
echo relative_path > repository/workdir