git-init: accept --bare option
It is unfortunate that "git init --bare" does not work and the only reason why "init" did not learn its own "--bare" option is because "git --bare init" already does the job (and as an option to the git 'potty', it is more generic solution). This teaches "git init" its own "--bare" option, so that both "git --bare init" and "git init --bare" works mostly the same way. [jc: rewrote the log message and added test] Signed-off-by: Luciano Rocha <strange@nsk.pt> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d2b3691b61
commit
74d3b23fe3
@ -8,7 +8,7 @@ git-init - Create an empty git repository or reinitialize an existing one
|
|||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
'git-init' [-q | --quiet] [--template=<template_directory>] [--shared[=<permissions>]]
|
'git-init' [-q | --quiet] [--bare] [--template=<template_directory>] [--shared[=<permissions>]]
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
@ -20,6 +20,11 @@ OPTIONS
|
|||||||
|
|
||||||
Only print error and warning messages, all other output will be suppressed.
|
Only print error and warning messages, all other output will be suppressed.
|
||||||
|
|
||||||
|
--bare::
|
||||||
|
|
||||||
|
Create a bare repository. If GIT_DIR environment is not set, it is set to the
|
||||||
|
current working directory.
|
||||||
|
|
||||||
--template=<template_directory>::
|
--template=<template_directory>::
|
||||||
|
|
||||||
Provide the directory from which templates will be used. The default template
|
Provide the directory from which templates will be used. The default template
|
||||||
|
@ -364,7 +364,7 @@ static int guess_repository_type(const char *git_dir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const char init_db_usage[] =
|
static const char init_db_usage[] =
|
||||||
"git-init [-q | --quiet] [--template=<template-directory>] [--shared]";
|
"git-init [-q | --quiet] [--bare] [--template=<template-directory>] [--shared[=<permissions>]]";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If you want to, you can share the DB area with any number of branches.
|
* If you want to, you can share the DB area with any number of branches.
|
||||||
@ -383,7 +383,12 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
|
|||||||
const char *arg = argv[1];
|
const char *arg = argv[1];
|
||||||
if (!prefixcmp(arg, "--template="))
|
if (!prefixcmp(arg, "--template="))
|
||||||
template_dir = arg+11;
|
template_dir = arg+11;
|
||||||
else if (!strcmp(arg, "--shared"))
|
else if (!strcmp(arg, "--bare")) {
|
||||||
|
static char git_dir[PATH_MAX+1];
|
||||||
|
is_bare_repository_cfg = 1;
|
||||||
|
setenv(GIT_DIR_ENVIRONMENT, getcwd(git_dir,
|
||||||
|
sizeof(git_dir)), 0);
|
||||||
|
} else if (!strcmp(arg, "--shared"))
|
||||||
shared_repository = PERM_GROUP;
|
shared_repository = PERM_GROUP;
|
||||||
else if (!prefixcmp(arg, "--shared="))
|
else if (!prefixcmp(arg, "--shared="))
|
||||||
shared_repository = git_config_perm("arg", arg+9);
|
shared_repository = git_config_perm("arg", arg+9);
|
||||||
|
@ -79,6 +79,17 @@ test_expect_success 'GIT_DIR bare' '
|
|||||||
check_config git-dir-bare.git true unset
|
check_config git-dir-bare.git true unset
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'init --bare' '
|
||||||
|
|
||||||
|
(
|
||||||
|
unset GIT_DIR GIT_WORK_TREE GIT_CONFIG
|
||||||
|
mkdir git-init-bare.git &&
|
||||||
|
cd git-init-bare.git &&
|
||||||
|
git init --bare
|
||||||
|
) &&
|
||||||
|
check_config git-init-bare.git true unset
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'GIT_DIR non-bare' '
|
test_expect_success 'GIT_DIR non-bare' '
|
||||||
|
|
||||||
(
|
(
|
||||||
|
Loading…
Reference in New Issue
Block a user