public AreaVM(string path, string name, AreaInitMode areaInitMode, string host = null, int port = 0) { RefreshCommand = new DelegateCommand(Refresh); PullCommand = new DelegateCommand(Pull); PushCommand = new DelegateCommand(Push); _name = name; DirectoryInfo dir = new DirectoryInfo(path); switch (areaInitMode) { case AreaInitMode.Clone: // Spawn another dialog for the source (or put it in the Clone New button) Client client = new Client(dir); if (client.Connect(host, port, null, true)) { bool result = client.Clone(true); if (!result) result = client.Clone(false); if (result) { string remoteName = "default"; client.Workspace.SetRemote(client.Host, client.Port, client.Module, remoteName); client.Pull(false, client.Workspace.CurrentBranch.ID.ToString()); _area = Area.Load(client.Workspace.Root); _area.Checkout(null, false, false); client.SyncRecords(); } } else { MessageBox.Show(string.Format("Couldn't connect to {0}:{1}", host, port), "Clone Failed", MessageBoxButton.OK, MessageBoxImage.Error); } client.Close(); break; case AreaInitMode.InitNew: // Tell versionr to initialize at path try { dir.Create(); } catch { MessageBox.Show("Error - couldn't create subdirectory \"{0}\"", dir.FullName); break; } _area = Area.Init(dir, name); break; case AreaInitMode.UseExisting: // Add it to settings and refresh UI, get status etc. _area = Area.Load(dir); break; } }
protected override bool RunInternal(Client client, RemoteCommandVerbOptions options) { CloneVerbOptions localOptions = options as CloneVerbOptions; if (localOptions.QuietFail && new System.IO.DirectoryInfo(System.IO.Path.Combine(TargetDirectory.FullName, ".versionr")).Exists) return true; bool result = false; try { TargetDirectory.Create(); } catch { Printer.PrintError("#e#Error - couldn't create subdirectory \"{0}\"##", TargetDirectory); return false; } if (localOptions.Full.HasValue) result = client.Clone(localOptions.Full.Value); else { result = client.Clone(true); if (!result) result = client.Clone(false); } if (result) { Printer.PrintMessage("Successfully cloned from remote vault. Initializing default remote."); string remoteName = "default"; if (client.Workspace.SetRemote(client.Host, client.Port, client.Module, remoteName)) Printer.PrintMessage("Configured remote \"#b#{0}##\" as: #b#{1}##", remoteName, client.VersionrURL); if (localOptions.Partial != null) client.Workspace.SetPartialPath(localOptions.Partial); if (localOptions.Update) { client.Pull(false, string.IsNullOrEmpty(localOptions.Branch) ? client.Workspace.CurrentBranch.ID.ToString() : localOptions.Branch); Area area = Area.Load(client.Workspace.Root); area.Checkout(localOptions.Branch, false, false); } if (localOptions.Synchronize) return client.SyncRecords(); } return result; }