Hello,
I am trying to add a file to an arbitrary branch without touching the current
worktree with as little overhead as possible.
For this, the sparse-checkout feature in conjuntion with the "shared
repository" feature seems to be perfect.
The basic idea goes like this:
TMP=`mktemp -d /var/tmp/test-XXXXXXXXX`
GD=$TMP/git
WD=$TMP/wd
git --work-tree $WD --git-dir $GD clone -qns -n . $GD
git --work-tree $WD --git-dir $GD config core.sparsecheckout true
echo path/of/file/which/I/want/to/create >>$GD/info/sparse-checkout
git --work-tree $WD --git-dir $GD checkout -b some-branch
remotes/origin/some-branch # !!!
( cd $WD
mkdir -p path/of/file/which/I/want/to
echo huhuh >path/of/file/which/I/want/to/create
git --work-tree $WD --git-dir $GD add path/of/file/which/I/want/to/create
git --work-tree $WD --git-dir $GD commit
git --work-tree $WD --git-dir $GD push
)
rm -rf $TMP
Unfortunately, the marked command errors out with
"error: Sparse checkout leaves no entry on working directory"
and won't create/switch to the branch that is to be modified.
Strange enough, I have some repositories at this machine where the
.git/info/sparse-checkout file contains only non-existing files and git
happily executes this "git checkout -b XXX remotes/origin/XXX" command leaving
the working tree totally empty all the time.
Someone understands this inconsistent behaviour?
--
Josef Wolf
[email protected]