Issue1966

Title merge-on-update adds more changes?
Priority bug Status chatting
Superseder Nosy List danchr, djc, hiluzi, mg, mpm, pmezard, sborho, tonfa
Assigned To Topics

Created on 2010-01-02.09:20:47 by djc, last changed 2010-02-07.15:47:35 by djc.

Messages
msg11639 (view) Author: djc Date: 2010-02-07.15:47:35
muggs: got that fixed in f83291e5643e.
msg11498 (view) Author: sborho Date: 2010-01-23.05:06:46
Can you push that fix for ui.py?

http://bitbucket.org/tortoisehg/stable/issue/891/launching-web-server-error
msg11370 (view) Author: djc Date: 2010-01-05.07:58:56
Okay... Can we make it get it right by making file-level merge more like
manifest-level merge?
msg11367 (view) Author: mpm Date: 2010-01-04.22:58:30
From up --debug:

resolving manifests
 ...
 ancestor 1139fcfeaeda local 1139fcfeaeda+ remote a275c3997e03
...
merging mercurial/ui.py
my mercurial/ui.py@1139fcfeaeda+ other mercurial/ui.py@a275c3997e03 ancestor
mercurial/ui.py@9e7b2c49d25d
 premerge successful

Note that this is a 'backwards merge', which has weird semantics. Manifest
merge gets it right (starting recently), file-level merge gets it wrong (and
always has).
msg11362 (view) Author: pmezard Date: 2010-01-03.12:28:59
I cannot find any major release doing this right down to 1.0.

Here is the relevant graph portion:

o    changeset:   10195:1139fcfeaeda
|\   parent:      10192:8161127a638f
| |  parent:      10194:a275c3997e03
| |  user:        Matt Mackall <mpm@selenic.com>
| |  date:        Fri Jan 01 18:10:10 2010 -0600
| |  summary:     Merge with stable
| |
| @  changeset:   10194:a275c3997e03
| |  branch:      stable
| |  user:        Matt Mackall <mpm@selenic.com>
| |  date:        Fri Jan 01 17:58:35 2010 -0600
| |  summary:     Added signature for changeset 296a0b14a686
| |
.


ui.py is merge with both other and common ancestor set to the filelog
version in a275c3997e03. The merge works if 1139fcfeaeda is used a common
ancestor instead.
msg11358 (view) Author: djc Date: 2010-01-02.09:20:47
Isn't this something we used to get right?

djc@miles crew $ hg id -nib
1139fcfeaeda+ 10195+ default
djc@miles crew $ hg diff
diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -234,7 +234,8 @@

     def write_err(self, *args):
         try:
-            if not sys.stdout.closed: sys.stdout.flush()
+            if not hasattr(sys.stdout, 'closed') or not sys.stdout.closed:
+                sys.stdout.flush()
             for a in args:
                 sys.stderr.write(str(a))
             # stderr may be buffered under win32 when redirected to files,
djc@miles crew $ hg up stable
merging mercurial/ui.py
251 files updated, 1 files merged, 148 files removed, 0 files unresolved
djc@miles crew $ hg id -nib
a275c3997e03+ 10194+ stable
djc@miles crew $ hg diff
diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -29,8 +29,11 @@
             self._ocfg = src._ocfg.copy()
             self._trustusers = src._trustusers.copy()
             self._trustgroups = src._trustgroups.copy()
+            self.environ = src.environ
             self.fixconfig()
         else:
+            # shared read-only environment
+            self.environ = os.environ
             # we always trust global config files
             for f in util.rcpath():
                 self.readconfig(f, trust=True)
@@ -231,7 +234,8 @@

     def write_err(self, *args):
         try:
-            if not sys.stdout.closed: sys.stdout.flush()
+            if not hasattr(sys.stdout, 'closed') or not sys.stdout.closed:
+                sys.stdout.flush()
             for a in args:
                 sys.stderr.write(str(a))
             # stderr may be buffered under win32 when redirected to files,
@@ -250,7 +254,13 @@
     def interactive(self):
         i = self.configbool("ui", "interactive", None)
         if i is None:
-            return sys.stdin.isatty()
+            try:
+                return sys.stdin.isatty()
+            except AttributeError:
+                # some environments replace stdin without implementing isatty
+                # usually those are non-interactive
+                return False
+
         return i

     def _readline(self, prompt=''):
History
Date User Action Args
2010-02-07 15:47:35djcsetnosy: mpm, tonfa, sborho, pmezard, hiluzi, mg, djc, danchr
messages: + msg11639
2010-01-23 05:06:46sborhosetnosy: + sborho
messages: + msg11498
2010-01-10 23:10:33tonfasetnosy: + tonfa
2010-01-06 12:37:37hiluzisetnosy: + hiluzi
2010-01-05 07:58:56djcsetnosy: mpm, pmezard, mg, djc, danchr
messages: + msg11370
2010-01-04 22:58:30mpmsetnosy: + mpm
messages: + msg11367
2010-01-03 21:18:44mgsetnosy: + mg
2010-01-03 12:29:00pmezardsetstatus: unread -> chatting
nosy: pmezard, djc, danchr
messages: + msg11362
2010-01-03 10:52:32pmezardsetnosy: + pmezard
2010-01-02 11:34:33danchrsetnosy: + danchr
2010-01-02 09:20:47djccreate