git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Torsten Bögershausen" <tboegi@web.de>
To: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v3 18/25] setup.c: support multi-checkout repo setup
Date: Mon, 24 Mar 2014 15:52:13 +0100	[thread overview]
Message-ID: <5330469D.9020008@web.de> (raw)
In-Reply-To: <1392730814-19656-19-git-send-email-pclouds@gmail.com>

On 02/18/2014 02:40 PM, Nguyễn Thái Ngọc Duy wrote:
> The repo setup procedure is updated to detect $GIT_DIR/commondir and
> set $GIT_COMMON_DIR properly.
>
> The core.worktree is ignored when $GIT_DIR/commondir presents. This is
> because "commondir" repos are intended for separate/linked checkouts
> and pointing them back to a fixed core.worktree just does not make
> sense.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
>  Documentation/config.txt        |  3 +-
>  Documentation/git-rev-parse.txt |  3 ++
>  builtin/rev-parse.c             |  4 +++
>  cache.h                         |  1 +
>  environment.c                   |  8 ++---
>  setup.c                         | 33 +++++++++++++-----
>  t/t1501-worktree.sh             | 76 +++++++++++++++++++++++++++++++++++++++++
>  t/t1510-repo-setup.sh           |  1 +
>  trace.c                         |  1 +
>  9 files changed, 115 insertions(+), 15 deletions(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 5f4d793..cbf4d97 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -381,7 +381,8 @@ false), while all other repositories are assumed to be bare (bare
>  
>  core.worktree::
>  	Set the path to the root of the working tree.
> -	This can be overridden by the GIT_WORK_TREE environment
> +	This can be overridden by the GIT_WORK_TREE
> +	or GIT_COMMON_DIR environment
>  	variable and the '--work-tree' command line option.
>  	The value can be an absolute path or relative to the path to
>  	the .git directory, which is either specified by --git-dir
> diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
> index 33e4e90..8e6ad32 100644
> --- a/Documentation/git-rev-parse.txt
> +++ b/Documentation/git-rev-parse.txt
> @@ -215,6 +215,9 @@ If `$GIT_DIR` is not defined and the current directory
>  is not detected to lie in a Git repository or work tree
>  print a message to stderr and exit with nonzero status.
>  
> +--git-common-dir::
> +	Show `$GIT_COMMON_DIR` if defined, else `$GIT_DIR`.
> +
>  --is-inside-git-dir::
>  	When the current working directory is below the repository
>  	directory print "true", otherwise "false".
> diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
> index e50bc65..c7057ce 100644
> --- a/builtin/rev-parse.c
> +++ b/builtin/rev-parse.c
> @@ -744,6 +744,10 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
>  				printf("%s%s.git\n", cwd, len && cwd[len-1] != '/' ? "/" : "");
>  				continue;
>  			}
> +			if (!strcmp(arg, "--git-common-dir")) {
> +				puts(get_git_common_dir());
> +				continue;
> +			}
>  			if (!strcmp(arg, "--resolve-git-dir")) {
>  				const char *gitdir = resolve_gitdir(argv[i+1]);
>  				if (!gitdir)
> diff --git a/cache.h b/cache.h
> index 51ade32..98b5dd3 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -407,6 +407,7 @@ extern char *get_object_directory(void);
>  extern char *get_index_file(void);
>  extern char *get_graft_file(void);
>  extern int set_git_dir(const char *path);
> +extern int get_common_dir(struct strbuf *sb, const char *gitdir);
>  extern const char *get_git_namespace(void);
>  extern const char *strip_namespace(const char *namespaced_ref);
>  extern const char *get_git_work_tree(void);
> diff --git a/environment.c b/environment.c
> index c998120..0999fc1 100644
> --- a/environment.c
> +++ b/environment.c
> @@ -126,6 +126,7 @@ static char *expand_namespace(const char *raw_namespace)
>  
>  static void setup_git_env(void)
>  {
> +	struct strbuf sb = STRBUF_INIT;
>  	const char *gitfile;
>  	const char *shallow_file;
>  
> @@ -134,12 +135,9 @@ static void setup_git_env(void)
>  		git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
>  	gitfile = read_gitfile(git_dir);
>  	git_dir = xstrdup(gitfile ? gitfile : git_dir);
> -	git_common_dir = getenv(GIT_COMMON_DIR_ENVIRONMENT);
> -	if (git_common_dir) {
> +	if (get_common_dir(&sb, git_dir))
>  		git_common_dir_env = 1;
> -		git_common_dir = xstrdup(git_common_dir);
> -	} else
> -		git_common_dir = git_dir;
> +	git_common_dir = strbuf_detach(&sb, NULL);
>  	git_object_dir = getenv(DB_ENVIRONMENT);
>  	if (!git_object_dir) {
>  		git_object_dir = xmalloc(strlen(git_common_dir) + 9);
> diff --git a/setup.c b/setup.c
> index e56ec11..d4ac878 100644
> --- a/setup.c
> +++ b/setup.c
> @@ -170,14 +170,15 @@ void verify_non_filename(const char *prefix, const char *arg)
>  	    "'git <command> [<revision>...] -- [<file>...]'", arg);
>  }
>  
> -static void get_common_dir(struct strbuf *sb, const char *gitdir)
> +int get_common_dir(struct strbuf *sb, const char *gitdir)
>  {
>  	struct strbuf data = STRBUF_INIT;
>  	struct strbuf path = STRBUF_INIT;
>  	const char *git_common_dir = getenv(GIT_COMMON_DIR_ENVIRONMENT);
> +	int ret = 0;
>  	if (git_common_dir) {
>  		strbuf_addstr(sb, git_common_dir);
> -		return;
> +		return 1;
>  	}
>  	strbuf_addf(&path, "%s/commondir", gitdir);
>  	if (file_exists(path.buf)) {
> @@ -189,10 +190,12 @@ static void get_common_dir(struct strbuf *sb, const char *gitdir)
>  			strbuf_addf(&path, "%s/", gitdir);
>  		strbuf_addbuf(&path, &data);
>  		strbuf_addstr(sb, real_path(path.buf));
> +		ret = 1;
>  	} else
>  		strbuf_addstr(sb, gitdir);
>  	strbuf_release(&data);
>  	strbuf_release(&path);
> +	return ret;
>  }
>  
>  /*
> @@ -279,13 +282,26 @@ void setup_work_tree(void)
>  	initialized = 1;
>  }
>  
> +static int check_repo_format(const char *var, const char *value, void *cb)
> +{
> +	if (strcmp(var, "core.repositoryformatversion") == 0)
> +		repository_format_version = git_config_int(var, value);
> +	else if (strcmp(var, "core.sharedrepository") == 0)
> +		shared_repository = git_config_perm(var, value);
> +	return 0;
> +}
> +
>  static int check_repository_format_gently(const char *gitdir, int *nongit_ok)
>  {
>  	struct strbuf sb = STRBUF_INIT;
>  	const char *repo_config;
> +	config_fn_t fn;
>  	int ret = 0;
>  
> -	get_common_dir(&sb, gitdir);
> +	if (get_common_dir(&sb, gitdir))
> +		fn = check_repo_format;
> +	else
> +		fn = check_repository_format_version;
>  	strbuf_addstr(&sb, "/config");
>  	repo_config = sb.buf;
>  
> @@ -298,7 +314,7 @@ static int check_repository_format_gently(const char *gitdir, int *nongit_ok)
>  	 * Use a gentler version of git_config() to check if this repo
>  	 * is a good one.
>  	 */
> -	git_config_early(check_repository_format_version, NULL, repo_config);
> +	git_config_early(fn, NULL, repo_config);
>  	if (GIT_REPO_VERSION < repository_format_version) {
>  		if (!nongit_ok)
>  			die ("Expected git repo version <= %d, found %d",
> @@ -770,11 +786,10 @@ int git_config_perm(const char *var, const char *value)
>  
>  int check_repository_format_version(const char *var, const char *value, void *cb)
>  {
> -	if (strcmp(var, "core.repositoryformatversion") == 0)
> -		repository_format_version = git_config_int(var, value);
> -	else if (strcmp(var, "core.sharedrepository") == 0)
> -		shared_repository = git_config_perm(var, value);
> -	else if (strcmp(var, "core.bare") == 0) {
> +	int ret = check_repo_format(var, value, cb);
> +	if (ret)
> +		return ret;
> +	if (strcmp(var, "core.bare") == 0) {
>  		is_bare_repository_cfg = git_config_bool(var, value);
>  		if (is_bare_repository_cfg == 1)
>  			inside_work_tree = -1;
> diff --git a/t/t1501-worktree.sh b/t/t1501-worktree.sh
> index 8f36aa9..d8bdaf4 100755
> --- a/t/t1501-worktree.sh
> +++ b/t/t1501-worktree.sh
> @@ -346,4 +346,80 @@ test_expect_success 'relative $GIT_WORK_TREE and git subprocesses' '
>  	test_cmp expected actual
>  '
>  
> +test_expect_success 'Multi-worktree setup' '
> +	mkdir work &&
> +	mkdir -p repo.git/repos/foo &&
> +	cp repo.git/HEAD repo.git/index repo.git/repos/foo &&
> +	unset GIT_DIR GIT_CONFIG GIT_WORK_TREE
> +'
> +
> +test_expect_success 'GIT_DIR set (1)' '
> +	echo "gitdir: repo.git/repos/foo" >gitfile &&
> +	echo ../.. >repo.git/repos/foo/commondir &&
> +	(
> +		cd work &&
> +		GIT_DIR=../gitfile git rev-parse --git-common-dir >actual &&
> +		echo "$TRASH_DIRECTORY/repo.git" >expect &&
> +		test_cmp expect actual
> +	)
> +'
> +
> +test_expect_success 'GIT_DIR set (2)' '
> +	echo "gitdir: repo.git/repos/foo" >gitfile &&
> +	echo "$TRASH_DIRECTORY/repo.git" >repo.git/repos/foo/commondir &&
> +	(
> +		cd work &&
> +		GIT_DIR=../gitfile git rev-parse --git-common-dir >actual &&
> +		echo "$TRASH_DIRECTORY/repo.git" >expect &&
> +		test_cmp expect actual
> +	)
> +'
> +
> +test_expect_success 'Auto discovery' '
> +	echo "gitdir: repo.git/repos/foo" >.git &&
> +	echo ../.. >repo.git/repos/foo/commondir &&
> +	(
> +		cd work &&
> +		git rev-parse --git-common-dir >actual &&
> +		echo "$TRASH_DIRECTORY/repo.git" >expect &&
> +		test_cmp expect actual &&
> +		echo haha >data1 &&
> +		git add data1 &&
> +		git ls-files --full-name :/ | grep data1 >actual &&
> +		echo work/data1 >expect &&
> +		test_cmp expect actual
> +	)
> +'
> +
> +test_expect_success '$GIT_DIR/common overrides core.worktree' '
> +	mkdir elsewhere &&
> +	git --git-dir=repo.git config core.worktree "$TRASH_DIRECTORY/elsewhere" &&
> +	echo "gitdir: repo.git/repos/foo" >.git &&
> +	echo ../.. >repo.git/repos/foo/commondir &&
> +	(
> +		cd work &&
> +		git rev-parse --git-common-dir >actual &&
> +		echo "$TRASH_DIRECTORY/repo.git" >expect &&
> +		test_cmp expect actual &&
> +		echo haha >data2 &&
> +		git add data2 &&
> +		git ls-files --full-name :/ | grep data2 >actual &&
> +		echo work/data2 >expect &&
> +		test_cmp expect actual
> +	)
> +'
> +
> +test_expect_success '$GIT_WORK_TREE overrides $GIT_DIR/common' '
> +	echo "gitdir: repo.git/repos/foo" >.git &&
> +	echo ../.. >repo.git/repos/foo/commondir &&
> +	(
> +		cd work &&
> +		echo haha >data3 &&
> +		git --git-dir=../.git --work-tree=. add data3 &&
> +		git ls-files --full-name -- :/ | grep data3 >actual &&
> +		echo data3 >expect &&
> +		test_cmp expect actual
> +	)
> +'
> +
>  test_done
> diff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh
> index cf2ee78..c211ef5 100755
> --- a/t/t1510-repo-setup.sh
> +++ b/t/t1510-repo-setup.sh
> @@ -106,6 +106,7 @@ setup_env () {
>  expect () {
>  	cat >"$1/expected" <<-EOF
>  	setup: git_dir: $2
> +	setup: git_common_dir: $2
>  	setup: worktree: $3
>  	setup: cwd: $4
>  	setup: prefix: $5
> diff --git a/trace.c b/trace.c
> index 08180a9..a594761 100644
> --- a/trace.c
> +++ b/trace.c
> @@ -173,6 +173,7 @@ void trace_repo_setup(const char *prefix)
>  		prefix = "(null)";
>  
>  	trace_printf_key(key, "setup: git_dir: %s\n", quote_crnl(get_git_dir()));
> +	trace_printf_key(key, "setup: git_common_dir: %s\n", quote_crnl(get_git_common_dir()));
>  	trace_printf_key(key, "setup: worktree: %s\n", quote_crnl(git_work_tree));
>  	trace_printf_key(key, "setup: cwd: %s\n", quote_crnl(cwd));
>  	trace_printf_key(key, "setup: prefix: %s\n", quote_crnl(prefix));

Did I report that t1501  fails when  there is a softlink in $PWD ?
/home/tb/projects is a softlink to /disc5/projects/
(And in total 4 TC failed)
--------------

expecting success:
        echo "gitdir: repo.git/repos/foo" >gitfile &&
        echo ../.. >repo.git/repos/foo/commondir &&
        (
                cd work &&
                GIT_DIR=../gitfile git rev-parse --git-common-dir >actual &&
                echo "$TRASH_DIRECTORY/repo.git" >expect &&
                test_cmp expect actual
        )

--- expect      2014-03-24 07:55:29.895870540 +0000
+++ actual      2014-03-24 07:55:29.895870540 +0000
@@ -1 +1 @@
-/home/tb/projects/git/git.pu/t/trash directory.t1501-worktree/repo.git
+/disc5/projects/git/git.pu/t/trash directory.t1501-worktree/repo.git
not ok 33 - GIT_DIR set (1)

  parent reply	other threads:[~2014-03-24 14:52 UTC|newest]

Thread overview: 169+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-18 13:39 [PATCH v3 00/25] Support multiple checkouts Nguyễn Thái Ngọc Duy
2014-02-18 13:39 ` [PATCH v3 01/25] path.c: make get_pathname() return strbuf instead of static buffer Nguyễn Thái Ngọc Duy
2014-02-19 20:28   ` Junio C Hamano
2014-02-19 23:26   ` Junio C Hamano
2014-03-01  2:40     ` Duy Nguyen
2014-03-03 17:56       ` Junio C Hamano
2014-02-18 13:39 ` [PATCH v3 02/25] Convert git_snpath() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2014-02-19 23:48   ` Junio C Hamano
2014-02-19 23:54     ` Duy Nguyen
2014-02-20  3:41       ` Junio C Hamano
2014-02-20  3:55         ` Duy Nguyen
2014-02-20 18:54           ` Junio C Hamano
2014-02-20 19:44   ` Junio C Hamano
2014-02-18 13:39 ` [PATCH v3 03/25] path.c: rename vsnpath() to do_git_path() Nguyễn Thái Ngọc Duy
2014-02-18 13:39 ` [PATCH v3 04/25] path.c: group git_path(), git_pathdup() and strbuf_git_path() together Nguyễn Thái Ngọc Duy
2014-02-18 13:39 ` [PATCH v3 05/25] Make git_path() aware of file relocation in $GIT_DIR Nguyễn Thái Ngọc Duy
2014-02-18 13:39 ` [PATCH v3 06/25] *.sh: respect $GIT_INDEX_FILE Nguyễn Thái Ngọc Duy
2014-02-18 13:39 ` [PATCH v3 07/25] reflog: avoid constructing .lock path with git_path Nguyễn Thái Ngọc Duy
2014-02-25 22:44   ` Junio C Hamano
2014-03-01  3:42     ` Duy Nguyen
2014-03-03 18:07       ` Junio C Hamano
2014-02-18 13:39 ` [PATCH v3 08/25] fast-import: use git_path() for accessing .git dir instead of get_git_dir() Nguyễn Thái Ngọc Duy
2014-02-18 13:39 ` [PATCH v3 09/25] commit: use SEQ_DIR instead of hardcoding "sequencer" Nguyễn Thái Ngọc Duy
2014-02-18 13:39 ` [PATCH v3 10/25] Add new environment variable $GIT_COMMON_DIR Nguyễn Thái Ngọc Duy
2014-02-26  1:24   ` Eric Sunshine
2014-02-26 10:55     ` Duy Nguyen
2014-02-26 16:12       ` Philip Oakley
2014-02-26 17:23         ` Eric Sunshine
2014-02-26 19:43       ` Eric Sunshine
2014-02-26 23:58   ` Junio C Hamano
2014-02-27  3:03     ` Duy Nguyen
2014-02-18 13:40 ` [PATCH v3 11/25] git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects Nguyễn Thái Ngọc Duy
2014-02-27  0:00   ` Junio C Hamano
2014-02-18 13:40 ` [PATCH v3 12/25] *.sh: avoid hardcoding $GIT_DIR/hooks/ Nguyễn Thái Ngọc Duy
2014-02-18 13:40 ` [PATCH v3 13/25] git-stash: avoid hardcoding $GIT_DIR/logs/ Nguyễn Thái Ngọc Duy
2014-02-18 13:40 ` [PATCH v3 14/25] setup.c: convert is_git_directory() to use strbuf Nguyễn Thái Ngọc Duy
2014-02-19 20:17   ` Junio C Hamano
2014-02-20 13:04     ` Duy Nguyen
2014-02-20 19:06       ` Junio C Hamano
2014-02-20 19:36         ` Junio C Hamano
2014-03-01  2:50     ` [PATCH] strbuf: style fix -- top opening bracket on a separate line Nguyễn Thái Ngọc Duy
2014-02-21  3:38   ` [PATCH v3 14/25] setup.c: convert is_git_directory() to use strbuf Eric Sunshine
2014-02-18 13:40 ` [PATCH v3 15/25] setup.c: detect $GIT_COMMON_DIR in is_git_directory() Nguyễn Thái Ngọc Duy
2014-02-27  0:16   ` Junio C Hamano
2014-03-01  3:33     ` Duy Nguyen
2014-02-18 13:40 ` [PATCH v3 16/25] setup.c: convert check_repository_format_gently to use strbuf Nguyễn Thái Ngọc Duy
2014-02-27  0:18   ` Junio C Hamano
2014-02-18 13:40 ` [PATCH v3 17/25] setup.c: detect $GIT_COMMON_DIR check_repository_format_gently() Nguyễn Thái Ngọc Duy
2014-02-27  0:22   ` Junio C Hamano
2014-02-27  2:43     ` Duy Nguyen
2014-02-27 17:48       ` Junio C Hamano
2014-02-18 13:40 ` [PATCH v3 18/25] setup.c: support multi-checkout repo setup Nguyễn Thái Ngọc Duy
2014-02-19 20:19   ` Junio C Hamano
2014-02-27 20:28   ` Junio C Hamano
2014-03-24 14:52   ` Torsten Bögershausen [this message]
2014-03-25 13:52     ` Duy Nguyen
2014-03-25 14:07       ` Duy Nguyen
2014-03-26 21:03         ` Junio C Hamano
2014-02-18 13:40 ` [PATCH v3 19/25] wrapper.c: wrapper to open a file, fprintf then close Nguyễn Thái Ngọc Duy
2014-02-18 13:40 ` [PATCH v3 20/25] use new wrapper write_file() for simple file writing Nguyễn Thái Ngọc Duy
2014-02-18 13:40 ` [PATCH v3 21/25] checkout: support checking out into a new working directory Nguyễn Thái Ngọc Duy
2014-02-26 20:06   ` Eric Sunshine
2014-02-26 23:19     ` Duy Nguyen
2014-02-27  6:59       ` Eric Sunshine
2014-02-18 13:40 ` [PATCH v3 22/25] checkout: clean up half-prepared directories in --to mode Nguyễn Thái Ngọc Duy
2014-02-18 13:40 ` [PATCH v3 23/25] checkout: detach if the branch is already checked out elsewhere Nguyễn Thái Ngọc Duy
2014-02-19 20:20   ` Junio C Hamano
2014-02-19 21:52   ` Eric Sunshine
2014-02-18 13:40 ` [PATCH v3 24/25] prune: strategies for linked checkouts Nguyễn Thái Ngọc Duy
2014-02-19 20:32   ` Junio C Hamano
2014-02-19 20:42     ` Junio C Hamano
2014-02-20 13:15     ` Duy Nguyen
2014-02-20 19:55       ` Junio C Hamano
2014-02-19 22:08   ` Eric Sunshine
2014-02-19 22:53     ` Eric Sunshine
2014-02-20 13:19     ` Duy Nguyen
2014-02-18 13:40 ` [PATCH v3 25/25] gc: support prune --repos Nguyễn Thái Ngọc Duy
2014-02-19 20:22   ` Junio C Hamano
2014-02-19 20:57 ` [PATCH v3 00/25] Support multiple checkouts Junio C Hamano
2014-03-01 12:12 ` [PATCH v4 00/27] " Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 01/27] path.c: make get_pathname() return strbuf instead of static buffer Nguyễn Thái Ngọc Duy
2014-03-02 19:51     ` Eric Sunshine
2014-03-03  0:14       ` Duy Nguyen
2014-03-01 12:12   ` [PATCH v4 02/27] Convert git_snpath() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2014-03-03  0:02     ` Eric Sunshine
2014-03-03  0:15       ` Duy Nguyen
2014-03-07  5:03         ` Duy Nguyen
2014-03-07  5:26           ` Eric Sunshine
2014-03-01 12:12   ` [PATCH v4 03/27] path.c: rename vsnpath() to do_git_path() Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 04/27] path.c: group git_path(), git_pathdup() and strbuf_git_path() together Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 05/27] Make git_path() aware of file relocation in $GIT_DIR Nguyễn Thái Ngọc Duy
2014-03-03  1:34     ` Eric Sunshine
2014-03-01 12:12   ` [PATCH v4 06/27] *.sh: respect $GIT_INDEX_FILE Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 07/27] reflog: avoid constructing .lock path with git_path Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 08/27] fast-import: use git_path() for accessing .git dir instead of get_git_dir() Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 09/27] commit: use SEQ_DIR instead of hardcoding "sequencer" Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 10/27] Add new environment variable $GIT_COMMON_DIR Nguyễn Thái Ngọc Duy
2014-03-03  7:29     ` Eric Sunshine
2014-03-01 12:12   ` [PATCH v4 11/27] git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 12/27] *.sh: avoid hardcoding $GIT_DIR/hooks/ Nguyễn Thái Ngọc Duy
2014-03-03  8:31     ` Eric Sunshine
2014-03-01 12:12   ` [PATCH v4 13/27] git-stash: avoid hardcoding $GIT_DIR/logs/ Nguyễn Thái Ngọc Duy
2014-03-01 15:50     ` Torsten Bögershausen
2014-03-01 12:12   ` [PATCH v4 14/27] setup.c: convert is_git_directory() to use strbuf Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 15/27] setup.c: detect $GIT_COMMON_DIR in is_git_directory() Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 16/27] setup.c: convert check_repository_format_gently to use strbuf Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 17/27] setup.c: detect $GIT_COMMON_DIR check_repository_format_gently() Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 18/27] setup.c: support multi-checkout repo setup Nguyễn Thái Ngọc Duy
2014-03-05 19:42     ` Junio C Hamano
2014-03-08  1:55       ` Duy Nguyen
2014-03-01 12:12   ` [PATCH v4 19/27] wrapper.c: wrapper to open a file, fprintf then close Nguyễn Thái Ngọc Duy
2014-03-01 17:11     ` Torsten Bögershausen
2014-03-04  2:47       ` Eric Sunshine
2014-03-01 12:12   ` [PATCH v4 20/27] use new wrapper write_file() for simple file writing Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 21/27] checkout: support checking out into a new working directory Nguyễn Thái Ngọc Duy
2014-03-01 12:12   ` [PATCH v4 22/27] checkout: clean up half-prepared directories in --to mode Nguyễn Thái Ngọc Duy
2014-03-06 10:06     ` Eric Sunshine
2014-03-01 12:12   ` [PATCH v4 23/27] checkout: detach if the branch is already checked out elsewhere Nguyễn Thái Ngọc Duy
2014-03-01 12:13   ` [PATCH v4 24/27] prune: strategies for linked checkouts Nguyễn Thái Ngọc Duy
2014-03-01 17:12     ` Torsten Bögershausen
2014-03-02  0:01       ` Duy Nguyen
2014-03-05 20:07     ` Junio C Hamano
2014-03-01 12:13   ` [PATCH v4 25/27] gc: style change -- no SP before closing bracket Nguyễn Thái Ngọc Duy
2014-03-01 12:13   ` [PATCH v4 26/27] gc: support prune --repos Nguyễn Thái Ngọc Duy
2014-03-07  6:40     ` Eric Sunshine
2014-03-01 12:13   ` [PATCH v4 27/27] count-objects: report unused files in $GIT_DIR/repos/ Nguyễn Thái Ngọc Duy
2014-03-05  4:25     ` Eric Sunshine
2014-03-05 12:08       ` Duy Nguyen
2014-03-08  2:47   ` [PATCH v5 00/28] Support multiple checkouts Nguyễn Thái Ngọc Duy
2014-03-08  2:47     ` [PATCH v5 01/28] path.c: make get_pathname() return strbuf instead of static buffer Nguyễn Thái Ngọc Duy
2014-03-08  6:11       ` Torsten Bögershausen
2014-03-08  8:57         ` Duy Nguyen
2014-03-08  2:47     ` [PATCH v5 02/28] path.c: make get_pathname() call sites return const char * Nguyễn Thái Ngọc Duy
2014-03-08  2:47     ` [PATCH v5 03/28] Convert git_snpath() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2014-03-17 18:11       ` Junio C Hamano
2014-03-08  2:47     ` [PATCH v5 04/28] path.c: rename vsnpath() to do_git_path() Nguyễn Thái Ngọc Duy
2014-03-08  2:47     ` [PATCH v5 05/28] path.c: group git_path(), git_pathdup() and strbuf_git_path() together Nguyễn Thái Ngọc Duy
2014-03-08  2:47     ` [PATCH v5 06/28] Make git_path() aware of file relocation in $GIT_DIR Nguyễn Thái Ngọc Duy
2014-03-09  8:19       ` Eric Sunshine
2014-03-08  2:47     ` [PATCH v5 07/28] *.sh: respect $GIT_INDEX_FILE Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 08/28] reflog: avoid constructing .lock path with git_path Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 09/28] fast-import: use git_path() for accessing .git dir instead of get_git_dir() Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 10/28] commit: use SEQ_DIR instead of hardcoding "sequencer" Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 11/28] Add new environment variable $GIT_COMMON_DIR Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 12/28] git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 13/28] *.sh: avoid hardcoding $GIT_DIR/hooks/ Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 14/28] git-stash: avoid hardcoding $GIT_DIR/logs/ Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 15/28] setup.c: convert is_git_directory() to use strbuf Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 16/28] setup.c: detect $GIT_COMMON_DIR in is_git_directory() Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 17/28] setup.c: convert check_repository_format_gently to use strbuf Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 18/28] setup.c: detect $GIT_COMMON_DIR check_repository_format_gently() Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 19/28] setup.c: support multi-checkout repo setup Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 20/28] wrapper.c: wrapper to open a file, fprintf then close Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 21/28] use new wrapper write_file() for simple file writing Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 22/28] checkout: support checking out into a new working directory Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 23/28] checkout: clean up half-prepared directories in --to mode Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 24/28] checkout: detach if the branch is already checked out elsewhere Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 25/28] prune: strategies for linked checkouts Nguyễn Thái Ngọc Duy
2014-03-09  8:20       ` Eric Sunshine
2014-03-08  2:48     ` [PATCH v5 26/28] gc: style change -- no SP before closing bracket Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 27/28] gc: support prune --repos Nguyễn Thái Ngọc Duy
2014-03-08  2:48     ` [PATCH v5 28/28] count-objects: report unused files in $GIT_DIR/repos/ Nguyễn Thái Ngọc Duy
2014-03-09  8:21       ` Eric Sunshine
2014-03-09 11:25         ` Duy Nguyen
2014-03-09  8:18     ` [PATCH v5 00/28] Support multiple checkouts Eric Sunshine
2014-07-06 20:46     ` Max Kirillov
2014-07-07 10:25       ` Duy Nguyen
2014-07-07 10:49         ` Dennis Kaarsemaker
2014-07-07 17:32           ` Max Kirillov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5330469D.9020008@web.de \
    --to=tboegi@web.de \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).