[PATCH STABLE] largefiles: distinguish "no remote repo" from "no file to upload" (issue3651)

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Fri Oct 5 11:18:48 CDT 2012


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1349453429 -32400
# Branch stable
# Node ID a8fbd665349830e2ed0adb770094d81c09b1440b
# Parent  6647ac9b9044023b4947e890b07d6dfef30ea9b3
largefiles: distinguish "no remote repo" from "no file to upload" (issue3651)

Before this patch, when there is no file to upload, "hg outgoing
--large" and "hg summary --large" show "no remote repo", even though
valid remote repository is specified.

It is because that "getoutgoinglfiles()" returns None, not only if no
valid remote repository is specified, but also if there is no file to
upload.

This patch makes "getoutgoinglfiles()" return empty list when there is
no file to upload, and makes largefiles show "no file to upload"
message at that time.

This patch doesn't test "if toupload is None" route in
"overrideoutgoing()", because this route is not executed unless remote
repository becomes inaccessible just before largefiles specific
processing: successful execution of "orig()" means that at least one
of "default", "default-push" or dest is valid one and
"getoutgoinglfiles()" never returns None in such cases.

At "hg summary --large" invocation, this patch shows message below:

    largefiles: (no file to upload)

This follows the message shown by "hg summary" with MQ:

    mq:     (empty queue)

diff -r 6647ac9b9044 -r a8fbd6653498 hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py	Mon Oct 01 23:11:28 2012 -0500
+++ b/hgext/largefiles/overrides.py	Sat Oct 06 01:10:29 2012 +0900
@@ -963,7 +963,7 @@
         return None
     o = lfutil.findoutgoing(repo, remote, False)
     if not o:
-        return None
+        return o
     o = repo.changelog.nodesbetween(o, revs)[0]
     if opts.get('newest_first'):
         o.reverse()
@@ -997,6 +997,8 @@
         toupload = getoutgoinglfiles(ui, repo, dest, **opts)
         if toupload is None:
             ui.status(_('largefiles: No remote repo\n'))
+        elif not toupload:
+            ui.status(_('largefiles: no file to upload\n'))
         else:
             ui.status(_('largefiles to upload:\n'))
             for file in toupload:
@@ -1016,6 +1018,8 @@
         toupload = getoutgoinglfiles(ui, repo, None, **opts)
         if toupload is None:
             ui.status(_('largefiles: No remote repo\n'))
+        elif not toupload:
+            ui.status(_('largefiles: (no file to upload)\n'))
         else:
             ui.status(_('largefiles: %d to upload\n') % len(toupload))
 
diff -r 6647ac9b9044 -r a8fbd6653498 tests/test-largefiles.t
--- a/tests/test-largefiles.t	Mon Oct 01 23:11:28 2012 -0500
+++ b/tests/test-largefiles.t	Sat Oct 06 01:10:29 2012 +0900
@@ -1628,3 +1628,87 @@
   .hglf/large2.dat
 
   $ cd ..
+
+issue3651: summary/outgoing with largefiles shows "no remote repo"
+unexpectedly
+
+  $ mkdir issue3651
+  $ cd issue3651
+
+  $ hg init src
+  $ echo a > src/a
+  $ hg -R src add --large src/a
+  $ hg -R src commit -m '#0'
+  Invoking status precommit hook
+  A a
+
+check messages when no remote repository is specified:
+"no remote repo" route for "hg outgoing --large" is not tested here,
+because it can't be reproduced easily.
+
+  $ hg init clone1
+  $ hg -R clone1 -q pull src
+  $ hg -R clone1 -q update
+  $ hg -R clone1 paths | grep default
+  [1]
+
+  $ hg -R clone1 summary --large
+  parent: 0:fc0bd45326d3 tip
+   #0
+  branch: default
+  commit: (clean)
+  update: (current)
+  largefiles: No remote repo
+
+check messages when there is no file to upload:
+
+  $ hg -q clone src clone2
+  $ hg -R clone2 paths | grep default
+  default = $TESTTMP/issue3651/src
+
+  $ hg -R clone2 summary --large
+  parent: 0:fc0bd45326d3 tip
+   #0
+  branch: default
+  commit: (clean)
+  update: (current)
+  searching for changes
+  largefiles: (no file to upload)
+  $ hg -R clone2 outgoing --large
+  comparing with $TESTTMP/issue3651/src
+  searching for changes
+  no changes found
+  searching for changes
+  largefiles: no file to upload
+  [1]
+
+check messages when there are files to upload:
+
+  $ echo b > clone2/b
+  $ hg -R clone2 add --large clone2/b
+  $ hg -R clone2 commit -m '#1'
+  Invoking status precommit hook
+  A b
+  $ hg -R clone2 summary --large
+  parent: 1:1acbe71ce432 tip
+   #1
+  branch: default
+  commit: (clean)
+  update: (current)
+  searching for changes
+  largefiles: 1 to upload
+  $ hg -R clone2 outgoing --large
+  comparing with $TESTTMP/issue3651/src
+  searching for changes
+  changeset:   1:1acbe71ce432
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     #1
+  
+  searching for changes
+  largefiles to upload:
+  b
+  
+
+  $ cd ..


More information about the Mercurial-devel mailing list