Re: [PATCH] contrib/workdir: add a simple script to create a working directory
- From
Junio C Hamano <junkio@cox.net>
- Date
- Mar 26, 2007, 23:42 UTC
- Message-ID
- <7vtzw7tvvv.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <20070326232751.2647.19279.julian@quantumfyre.co.uk>
Julian Phillips <julian@quantumfyre.co.uk> writes:
> Add a simple script to create a working directory that uses symlinks > to point at an exisiting repository. This allows having different > branches in different working directories but all from the same > repository. A poor-man's .gitlink if you will.
I would not call it poor-man's. It is 'without complexity' and that is a good thing, especially when you are not doing any submodule stuff.
Show 10 quoted lines
> +# create the links to the original repo
> +for x in config refs logs/refs objects info hooks packed-refs remotes rr-cache
> +do
> + case ${x} in
> + */*)
> + mkdir -p $(dirname ${new_workdir}/.git/${x});
> + ;;
> + esac
> + ln -s ${orig_git}/.git/${x} ${new_workdir}/.git/${x};
> +doneI think the above list "for x" is correct, but probably the code wants to comment on why it specifically excludes logs/HEAD from the symlinked set ;-).
Show 6 quoted lines
> +# now setup the workdir
> +cd ${new_workdir};
> +# create a fake HEAD, to stop checkout complaining
> +echo "ref: refs/heads/master" > .git/HEAD;
> +# now checkout the branch that was asked for
> +git checkout ${branch};If ${branch} was 'master', does this do a checkout? I think -f might be needed.