<div dir="ltr"><div class="gmail_quote">On Thu, Jun 9, 2011 at 3:48 AM, Mark Kendrat <span dir="ltr">&lt;<a href="mailto:swdev10@live.com">swdev10@live.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
# HG changeset patch<br>
# User Mark Kendrat &lt;<a href="mailto:swdev10@live.com">swdev10@live.com</a>&gt;<br>
# Date 1307580470 14400<br>
# Node ID c187493d350a4afe8765d093cf0825a51bb5527b<br>
# Parent  48ec0763afbbbbb4802fb836ae75256e82e5609c<br>
update: --check should fail if untracked files would be lost (issue2450)<br>
<br>
diff -r 48ec0763afbb -r c187493d350a mercurial/commands.py<br>
--- a/mercurial/commands.py     Tue Jun 07 17:02:54 2011 -0500<br>
+++ b/mercurial/commands.py     Wed Jun 08 20:47:50 2011 -0400<br>
@@ -5027,7 +5027,7 @@<br>
         rev = cmdutil.finddate(ui, repo, date)<br>
<br>
     if clean or check:<br>
-        ret = hg.clean(repo, rev)<br>
+        ret = hg.clean(repo, rev, check=check)<br>
     else:<br>
         ret = hg.update(repo, rev)<br>
<br>
diff -r 48ec0763afbb -r c187493d350a mercurial/hg.py<br>
--- a/mercurial/hg.py   Tue Jun 07 17:02:54 2011 -0500<br>
+++ b/mercurial/hg.py   Wed Jun 08 20:47:50 2011 -0400<br>
@@ -395,9 +395,9 @@<br>
 # naming conflict in clone()<br>
 _update = update<br>
<br>
-def clean(repo, node, show_stats=True):<br>
+def clean(repo, node, show_stats=True, check=False):<br>
     &quot;&quot;&quot;forcibly switch the working directory to node, clobbering changes&quot;&quot;&quot;<br>
-    stats = mergemod.update(repo, node, False, True, None)<br>
+    stats = mergemod.update(repo, node, False, True, None, check=check)<br>
     if show_stats:<br>
         _showstats(repo, stats)<br>
     return stats[3] &gt; 0<br>
diff -r 48ec0763afbb -r c187493d350a mercurial/merge.py<br>
--- a/mercurial/merge.py        Tue Jun 07 17:02:54 2011 -0500<br>
+++ b/mercurial/merge.py        Wed Jun 08 20:47:50 2011 -0400<br>
@@ -443,7 +443,7 @@<br>
                 if f:<br>
                     repo.dirstate.drop(f)<br>
<br>
-def update(repo, node, branchmerge, force, partial, ancestor=None):<br>
+def update(repo, node, branchmerge, force, partial, ancestor=None, check=False):<br>
     &quot;&quot;&quot;<br>
     Perform a merge between the working directory and the given node<br>
<br>
@@ -538,7 +538,7 @@<br>
         ### calculate phase<br>
         action = []<br>
         wc.status(unknown=True) # prime cache<br>
-        if not force:<br>
+        if not force or check:<br>
             _checkunknown(wc, p2)<br>
         if not util.checkcase(repo.path):<br>
             _checkcollision(p2)<br>
diff -r 48ec0763afbb -r c187493d350a tests/test-simple-update.t<br>
--- a/tests/test-simple-update.t        Tue Jun 07 17:02:54 2011 -0500<br>
+++ b/tests/test-simple-update.t        Wed Jun 08 20:47:50 2011 -0400<br>
@@ -54,3 +54,42 @@<br>
   $ hg upd -d foo 0<br>
   abort: you can&#39;t specify a revision and a date<br>
   [255]<br>
+<br>
+test for protection of untracked files using repo1 and repo2<br>
+<br>
+.. initial repo1<br>
+  $ hg init repo1<br>
+<br>
+.. repo2 is a clone that adds newfile and pushes back to repo1<br>
+  $ hg clone repo1 repo2<br>
+  updating to branch default<br>
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved<br>
+  $ cd $TESTTMP/repo2<br>
+  cd: 42: can&#39;t cd to $TESTTMP/repo2<br>
+  [2]<br></blockquote><div><br></div><div>There&#39;s a problem with your test starting here. I think you&#39;re missing a `cd ..` at the start or something like that.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

+  $ echo &quot;finished work&quot; &gt; newfile<br>
+  $ hg add newfile<br>
+  $ hg commit -m &quot;work 2&quot;<br>
+  $ hg push<br>
+  pushing to default-push<br>
+  abort: repository default-push not found!<br>
+  [255]<br>
+<br>
+.. repo1 begins work in progress in newfile<br>
+  $ cd $TESTTMP/repo1<br>
+  cd: 52: can&#39;t cd to $TESTTMP/repo1<br>
+  [2]<br>
+  $ echo &quot;work in progress&quot; &gt; newfile<br>
+<br>
+.. repo1 does an update and work in progress is protected<br>
+  $ hg update<br>
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved<br>
+<br>
+.. repo1 does an update --check and work in progress is protected<br>
+  $ hg update --check<br>
+  abort: uncommitted local changes<br>
+  [255]<br>
+<br>
+.. repo1 does an update --clean and work in progress is removed<br>
+  $ hg update --clean<br>
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved<br>
_______________________________________________<br>
Mercurial-devel mailing list<br>
<a href="mailto:Mercurial-devel@selenic.com">Mercurial-devel@selenic.com</a><br>
<a href="http://selenic.com/mailman/listinfo/mercurial-devel" target="_blank">http://selenic.com/mailman/listinfo/mercurial-devel</a><br>
</blockquote></div><br></div>