Добавлена возможность инициализации репозитория с перезаписью существующего через флаг force
This commit is contained in:
parent
35a7b26a4a
commit
db9a6be9f4
2 changed files with 14 additions and 4 deletions
|
@ -15,7 +15,12 @@ int main(string[] args)
|
||||||
}
|
}
|
||||||
|
|
||||||
auto argumets = new Program(programName, snagVersion)
|
auto argumets = new Program(programName, snagVersion)
|
||||||
.add(new Command("init", "Initializing the repository for storing snapshots"))
|
.add(new Command("init", "Initializing the repository for storing snapshots")
|
||||||
|
.add(new Flag("f", "force", "Initializing a repository with overwriting the existing one")
|
||||||
|
.name("force")
|
||||||
|
.optional
|
||||||
|
)
|
||||||
|
)
|
||||||
.add(new Command("status", "Checking the status of tracked files"))
|
.add(new Command("status", "Checking the status of tracked files"))
|
||||||
.add(new Command("diff", "Show changed data"))
|
.add(new Command("diff", "Show changed data"))
|
||||||
.add(new Command("import", "Import snapshot from a tar.gz archive")
|
.add(new Command("import", "Import snapshot from a tar.gz archive")
|
||||||
|
@ -117,7 +122,7 @@ int main(string[] args)
|
||||||
try {
|
try {
|
||||||
argumets
|
argumets
|
||||||
.on("init", init =>
|
.on("init", init =>
|
||||||
snag.initialize()
|
snag.initialize(init.flag("force"))
|
||||||
)
|
)
|
||||||
.on("diff", diff =>
|
.on("diff", diff =>
|
||||||
snag.diff()
|
snag.diff()
|
||||||
|
|
|
@ -44,13 +44,18 @@ class Snag {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initialize() {
|
void initialize(bool force) {
|
||||||
auto result = execute(_baseCommand ~ ["rev-parse", "--git-dir"]);
|
auto result = execute(_baseCommand ~ ["rev-parse", "--git-dir"]);
|
||||||
!result.status &&
|
!force && !result.status &&
|
||||||
throw new SnagException(
|
throw new SnagException(
|
||||||
"The Git repository has already been initialized: "
|
"The Git repository has already been initialized: "
|
||||||
~ result.output.strip('\n')
|
~ result.output.strip('\n')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
force && _config.git.exists
|
||||||
|
&& _config.git.isDir
|
||||||
|
&& _config.git.rmdirRecurse;
|
||||||
|
|
||||||
git(
|
git(
|
||||||
["init", "--initial-branch=default"],
|
["init", "--initial-branch=default"],
|
||||||
"A Git repository initialization error occurred"
|
"A Git repository initialization error occurred"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue