Add a numbered prefix name for cloned folders if the name already exists
This commit is contained in:
parent
27ff5e25e1
commit
567f4503cd
|
@ -332,12 +332,11 @@ namespace SparkleShare {
|
||||||
if (name.StartsWith ("/"))
|
if (name.StartsWith ("/"))
|
||||||
name = name.Substring (1);
|
name = name.Substring (1);
|
||||||
|
|
||||||
// TODO: remove .git suffic for folders in Sparkleshare
|
string canonical_name = System.IO.Path.GetFileNameWithoutExtension (name);
|
||||||
// TODO: Add '... (2)' if folder already exists
|
|
||||||
|
|
||||||
string url = server + "/" + name;
|
string url = server + "/" + name;
|
||||||
string tmp_folder = SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath,
|
string tmp_folder = SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath,
|
||||||
System.IO.Path.GetFileNameWithoutExtension (name));
|
canonical_name);
|
||||||
|
|
||||||
SparkleFetcher fetcher = new SparkleFetcher (url, tmp_folder);
|
SparkleFetcher fetcher = new SparkleFetcher (url, tmp_folder);
|
||||||
|
|
||||||
|
@ -345,22 +344,36 @@ namespace SparkleShare {
|
||||||
|
|
||||||
fetcher.CloningStarted += delegate {
|
fetcher.CloningStarted += delegate {
|
||||||
|
|
||||||
SparkleHelpers.DebugInfo ("Git", "[" + name + "] Cloning Repository");
|
SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning Repository");
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
fetcher.CloningFinished += delegate {
|
fetcher.CloningFinished += delegate {
|
||||||
|
|
||||||
SparkleHelpers.DebugInfo ("Git", "[" + name + "] Repository cloned");
|
SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Repository cloned");
|
||||||
|
|
||||||
ClearAttributes (tmp_folder);
|
ClearAttributes (tmp_folder);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
bool folder_exists = Directory.Exists (
|
||||||
|
SparkleHelpers.CombineMore (SparklePaths.SparklePath, canonical_name));
|
||||||
|
|
||||||
|
int i = 1;
|
||||||
|
while (folder_exists) {
|
||||||
|
|
||||||
|
i++;
|
||||||
|
folder_exists = Directory.Exists (
|
||||||
|
SparkleHelpers.CombineMore (SparklePaths.SparklePath,
|
||||||
|
canonical_name + " (" + i + ")"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
string target_folder_name = canonical_name + " (" + i + ")";
|
||||||
|
|
||||||
Directory.Move (tmp_folder,
|
Directory.Move (tmp_folder,
|
||||||
SparkleHelpers.CombineMore (SparklePaths.SparklePath,
|
SparkleHelpers.CombineMore (SparklePaths.SparklePath, target_folder_name));
|
||||||
System.IO.Path.GetFileNameWithoutExtension (name)));
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
@ -376,7 +389,7 @@ namespace SparkleShare {
|
||||||
|
|
||||||
fetcher.CloningFailed += delegate {
|
fetcher.CloningFailed += delegate {
|
||||||
|
|
||||||
SparkleHelpers.DebugInfo ("Git", "[" + name + "] Cloning failed");
|
SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning failed");
|
||||||
|
|
||||||
if (Directory.Exists (tmp_folder)) {
|
if (Directory.Exists (tmp_folder)) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue