diff --git a/dvc/commands/init.py b/dvc/commands/init.py index 5f6d7424c..79862a067 100644 --- a/dvc/commands/init.py +++ b/dvc/commands/init.py @@ -42,7 +42,7 @@ class CmdInit(CmdBaseNoRepo): try: with Repo.init( - ".", + self.args.directory, no_scm=self.args.no_scm, force=self.args.force, subdir=self.args.subdir, @@ -57,10 +57,11 @@ class CmdInit(CmdBaseNoRepo): def add_parser(subparsers, parent_parser): """Setup parser for `dvc init`.""" - INIT_HELP = "Initialize DVC in the current directory." + INIT_HELP = "Initialize DVC repository." INIT_DESCRIPTION = ( - "Initialize DVC in the current directory. Expects directory\n" - "to be a Git repository unless --no-scm option is specified." + "Initialize DVC repository in the given directory (defaults to the current " + "working directory).\n" + "Expects directory to be a Git repository unless --no-scm option is specified." ) init_parser = subparsers.add_parser( @@ -70,6 +71,14 @@ def add_parser(subparsers, parent_parser): help=INIT_HELP, formatter_class=formatter.RawDescriptionHelpFormatter, ) + init_parser.add_argument( + "directory", + nargs="?", + default=".", + help=( + "Directory to initialize DVC in. Defaults to the current working directory." + ), + ) init_parser.add_argument( "--no-scm", action="store_true", diff --git a/dvc/repo/init.py b/dvc/repo/init.py index 3d7d383cc..c048c23d8 100644 --- a/dvc/repo/init.py +++ b/dvc/repo/init.py @@ -63,7 +63,7 @@ def init(root_dir=os.curdir, no_scm=False, force=False, subdir=False): # noqa: remove(dvc_dir) - os.mkdir(dvc_dir) + os.makedirs(dvc_dir, exist_ok=True) config = Config.init(dvc_dir)