public void TestCloneLocal() { string firstPath = GetTemporaryPath(); string secondPath = GetTemporaryPath(); string file = Path.Combine(firstPath, "foo"); CommandClient.Initialize(firstPath, MercurialPath); using (var client = new CommandClient(firstPath, null, null, MercurialPath)) { File.WriteAllText(file, "1"); client.Add(file); client.Commit("1"); } try { CommandClient.Clone(source: firstPath, destination: secondPath, mercurialPath: MercurialPath); } catch (Exception ex) { Console.WriteLine(ex); Assert.That(false, ex.Message); } Assert.That(Directory.Exists(Path.Combine(secondPath, ".hg")), string.Format("Repository was not cloned from {0} to {1}", firstPath, secondPath)); Assert.That(File.Exists(Path.Combine(secondPath, "foo")), "foo doesn't exist in cloned working copy"); using (var client = new CommandClient(secondPath, null, null, MercurialPath)) { IList <Revision> log = client.Log(null); Assert.AreEqual(1, log.Count, "Unexpected number of log entries"); } }
public void TestCloneRemote() { string path = GetTemporaryPath(); CommandClient.Clone(TestRepo, path, true, null, "10", null, false, true, MercurialPath); Assert.That(Directory.Exists(Path.Combine(path, ".hg")), string.Format("Repository was not cloned from {0} to {1}", TestRepo, path)); }
internal static void Clone(string branchLocation, string localPath, MonoDevelop.Core.IProgressMonitor monitor) { try { CommandClient.Clone(source: branchLocation, destination: localPath, mercurialPath: DefaultMercurialPath); } catch (CommandException ce) { monitor.ReportError(ce.Message, ce); } monitor.ReportSuccess(string.Empty); }
public void TestResolve() { string firstPath = GetTemporaryPath(); string secondPath = GetTemporaryPath(); string file = Path.Combine(firstPath, "foo"); CommandClient.Initialize(firstPath, MercurialPath); CommandClient firstClient = null, secondClient = null; try { // Create repo with one commit firstClient = new CommandClient(firstPath, null, null, MercurialPath); File.WriteAllText(file, "1\n"); firstClient.Add(file); firstClient.Commit("1"); // Clone repo CommandClient.Clone(source: firstPath, destination: secondPath, mercurialPath: MercurialPath); secondClient = new CommandClient(secondPath, null, null, MercurialPath); Assert.AreEqual(1, secondClient.Log(null).Count, "Unexpected number of log entries"); // Add changeset to original repo File.WriteAllText(file, "2\n"); firstClient.Commit("2"); // Add non-conflicting changeset to child repo File.WriteAllText(Path.Combine(secondPath, "foo"), "1\na\n"); secondClient.Commit("a"); // Pull from clone Assert.IsTrue(secondClient.Pull(null), "Pull unexpectedly resulted in unresolved files"); Assert.AreEqual(3, secondClient.Log(null).Count, "Unexpected number of log entries"); Assert.AreEqual(2, secondClient.Heads().Count(), "Unexpected number of heads"); Assert.IsTrue(secondClient.Merge(null), "Merge unexpectedly resulted in unresolved files"); IDictionary <string, bool> statuses = secondClient.Resolve(null, true, true, false, false, null, null, null); Assert.That(statuses.ContainsKey("foo"), "No merge status for foo"); Assert.AreEqual(true, statuses ["foo"], "Incorrect merge status for foo"); } finally { if (null != firstClient) { firstClient.Dispose(); } if (null != secondClient) { secondClient.Dispose(); } } }
public void TestPush() { string firstPath = GetTemporaryPath(); string secondPath = GetTemporaryPath(); string file = Path.Combine(firstPath, "foo"); CommandClient.Initialize(firstPath, MercurialPath); CommandClient firstClient = null, secondClient = null; try { // Create repo with one commit firstClient = new CommandClient(firstPath, null, null, MercurialPath); File.WriteAllText(file, "1\n"); firstClient.Add(file); firstClient.Commit("1"); // Clone repo CommandClient.Clone(source: firstPath, destination: secondPath, mercurialPath: MercurialPath); secondClient = new CommandClient(secondPath, null, null, MercurialPath); Assert.AreEqual(1, secondClient.Log(null).Count, "Unexpected number of log entries"); // Add changeset to child repo File.WriteAllText(Path.Combine(secondPath, "foo"), "1\na\n"); secondClient.Commit("a"); // Push to parent Assert.IsTrue(secondClient.Push(firstPath, null), "Nothing to push"); // Assert that the first repo now has two revisions in the log Assert.AreEqual(2, firstClient.Log(null, firstPath).Count, "Known commandserver bug: server is out of sync"); } finally { if (null != firstClient) { firstClient.Dispose(); } if (null != secondClient) { secondClient.Dispose(); } } }
public void TestOutgoing() { string firstPath = GetTemporaryPath(); string secondPath = GetTemporaryPath(); string file = Path.Combine(firstPath, "foo"); CommandClient.Initialize(firstPath, MercurialPath); CommandClient firstClient = null, secondClient = null; try { // Create repo with one commit firstClient = new CommandClient(firstPath, null, null, MercurialPath); File.WriteAllText(file, "1"); firstClient.Add(file); firstClient.Commit("1"); // Clone repo CommandClient.Clone(source: firstPath, destination: secondPath, mercurialPath: MercurialPath); secondClient = new CommandClient(secondPath, null, null, MercurialPath); Assert.AreEqual(1, secondClient.Log(null).Count, "Unexpected number of log entries"); // Add changeset to original repo File.WriteAllText(file, "2"); firstClient.Commit("2"); File.WriteAllText(file, "3"); firstClient.Commit("3"); IList <Revision> outgoing = firstClient.Outgoing(secondPath, null); Assert.AreEqual(2, outgoing.Count, "Unexpected number of outgoing changesets"); } finally { if (null != firstClient) { firstClient.Dispose(); } if (null != secondClient) { secondClient.Dispose(); } } }
public void TestPull() { string firstPath = GetTemporaryPath(); string secondPath = GetTemporaryPath(); string file = Path.Combine(firstPath, "foo"); CommandClient.Initialize(firstPath, MercurialPath); CommandClient firstClient = null, secondClient = null; try { // Create repo with one commit firstClient = new CommandClient(firstPath, null, null, MercurialPath); File.WriteAllText(file, "1"); firstClient.Add(file); firstClient.Commit("1"); // Clone repo CommandClient.Clone(source: firstPath, destination: secondPath, mercurialPath: MercurialPath); secondClient = new CommandClient(secondPath, null, null, MercurialPath); Assert.AreEqual(1, secondClient.Log(null).Count, "Unexpected number of log entries"); // Add changeset to original repo File.WriteAllText(file, "2"); firstClient.Commit("2"); // Pull from clone Assert.IsTrue(secondClient.Pull(null), "Pull unexpectedly resulted in unresolved files"); Assert.AreEqual(2, secondClient.Log(null).Count, "Unexpected number of log entries"); } finally { if (null != firstClient) { firstClient.Dispose(); } if (null != secondClient) { secondClient.Dispose(); } } }