git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] contrib/workdir: add a simple script to create a working directory
@ 2007-03-26 23:15 Julian Phillips
  2007-03-26 23:42 ` Junio C Hamano
  0 siblings, 1 reply; 9+ messages in thread
From: Julian Phillips @ 2007-03-26 23:15 UTC (permalink / raw)
  To: git

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.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
---

I wrote this for my own use based on a post from Junio earlier this month
(http://article.gmane.org/gmane.comp.version-control.git/41513/).

Sent just in case it might be useful?

 contrib/workdir/git-new-workdir |   53 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)
 create mode 100755 contrib/workdir/git-new-workdir

diff --git a/contrib/workdir/git-new-workdir b/contrib/workdir/git-new-workdir
new file mode 100755
index 0000000..4f4f926
--- /dev/null
+++ b/contrib/workdir/git-new-workdir
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+function usage () {
+	echo "usage:" $1;
+	exit 127;
+}
+
+function die () {
+	echo $1;
+	exit 128;
+}
+
+test $# -eq 3 || usage "$0 <original> <new_workdir> <branch>";
+
+orig_git=$1;
+new_workdir=$2;
+branch=$3;
+
+# want to make sure that what is pointed to has a .git directory ...
+test -d ${orig_git}/.git || die "${original_git} is not a git repository!";
+
+# don't link to a workdir, link to the original repo the workdir is linked to
+if test -L ${orig_git}/.git/config
+then
+	orig_git=$(dirname $(dirname $(readlink -f gm/.git/config)));
+fi
+
+# make sure the the links use full paths
+orig_git=$(cd ${orig_git}; pwd);
+
+# create the workdir
+mkdir -p ${new_workdir}/.git || die "unable to create new dir ${new_workdir}!";
+
+# 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};
+done
+
+# 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};
+
+# vim: tabstop=8
+# vim: noexpandtab
-- 
1.5.0.5

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2007-03-27 13:50 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-26 23:15 [PATCH] contrib/workdir: add a simple script to create a working directory Julian Phillips
2007-03-26 23:42 ` Junio C Hamano
2007-03-26 23:15   ` Julian Phillips
2007-03-27  2:42     ` Eric Lesh
2007-03-27  4:13       ` Junio C Hamano
2007-03-27 12:59       ` Julian Phillips
2007-03-27 13:50         ` Eric Lesh
2007-03-27  5:59     ` Junio C Hamano
2007-03-26 23:15       ` [PATCH v3] " Julian Phillips

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).