##// END OF EJS Templates
Merge with TAH.
Bryan O'Sullivan -
r894:62ec6657 merge default
parent child Browse files
Show More
@@ -509,7 +509,7 b' SPECIFYING MULTIPLE REVISIONS'
509 509 If BEGIN is greater than END, revisions are treated in reverse
510 510 order.
511 511
512 A range acts as an open interval. This means that a range of 3:5
512 A range acts as a closed interval. This means that a range of 3:5
513 513 gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2.
514 514
515 515 ENVIRONMENT VARIABLES
@@ -397,7 +397,7 b' class dirstate:'
397 397 def copied(self, file):
398 398 return self.copies.get(file, None)
399 399
400 def update(self, files, state):
400 def update(self, files, state, **kw):
401 401 ''' current states:
402 402 n normal
403 403 m needs merging
@@ -412,7 +412,9 b' class dirstate:'
412 412 self.map[f] = ('r', 0, 0, 0)
413 413 else:
414 414 s = os.stat(os.path.join(self.root, f))
415 self.map[f] = (state, s.st_mode, s.st_size, s.st_mtime)
415 st_size = kw.get('st_size', s.st_size)
416 st_mtime = kw.get('st_mtime', s.st_mtime)
417 self.map[f] = (state, s.st_mode, st_size, st_mtime)
416 418
417 419 def forget(self, files):
418 420 if not files: return
@@ -544,36 +546,44 b' class dirstate:'
544 546 if match(fn):
545 547 yield src, fn
546 548
547 def changes(self, files = None, match = util.always):
549 def changes(self, files=None, match=util.always):
548 550 self.read()
549 551 if not files:
550 552 dc = self.map.copy()
551 553 else:
552 554 dc = self.filterfiles(files)
553 lookup, changed, added, unknown = [], [], [], []
555 lookup, modified, added, unknown = [], [], [], []
556 removed, deleted = [], []
554 557
555 558 for src, fn in self.walk(files, match, dc=dc):
556 try: s = os.stat(os.path.join(self.root, fn))
557 except: continue
558
559 if fn in dc:
560 c = dc[fn]
559 try:
560 s = os.stat(os.path.join(self.root, fn))
561 except OSError:
562 continue
563 if not stat.S_ISREG(s.st_mode):
564 continue
565 c = dc.get(fn)
566 if c:
561 567 del dc[fn]
562
563 568 if c[0] == 'm':
564 changed.append(fn)
569 modified.append(fn)
565 570 elif c[0] == 'a':
566 571 added.append(fn)
567 572 elif c[0] == 'r':
568 573 unknown.append(fn)
569 574 elif c[2] != s.st_size or (c[1] ^ s.st_mode) & 0100:
570 changed.append(fn)
571 elif c[1] != s.st_mode or c[3] != s.st_mtime:
575 modified.append(fn)
576 elif c[3] != s.st_mtime:
572 577 lookup.append(fn)
573 578 else:
574 if match(fn): unknown.append(fn)
579 unknown.append(fn)
575 580
576 return (lookup, changed, added, filter(match, dc.keys()), unknown)
581 for fn, c in [(fn, c) for fn, c in dc.items() if match(fn)]:
582 if c[0] == 'r':
583 removed.append(fn)
584 else:
585 deleted.append(fn)
586 return (lookup, modified, added, removed + deleted, unknown)
577 587
578 588 # used to avoid circular references so destructors work
579 589 def opener(base):
@@ -1624,10 +1634,20 b' class localrepository:'
1624 1634 m, o, flag = merge[f]
1625 1635 self.merge3(f, m, o)
1626 1636 util.set_exec(self.wjoin(f), flag)
1627 if moddirstate and mode == 'm':
1628 # only update dirstate on branch merge, otherwise we
1629 # could mark files with changes as unchanged
1630 self.dirstate.update([f], mode)
1637 if moddirstate:
1638 if mode == 'm':
1639 # only update dirstate on branch merge, otherwise we
1640 # could mark files with changes as unchanged
1641 self.dirstate.update([f], mode)
1642 elif p2 == nullid:
1643 # update dirstate from parent1's manifest
1644 m1n = self.changelog.read(p1)[0]
1645 m1 = self.manifest.read(m1n)
1646 f_len = len(self.file(f).read(m1[f]))
1647 self.dirstate.update([f], mode, st_size=f_len, st_mtime=0)
1648 else:
1649 self.ui.warn("Second parent without branch merge!?\n"
1650 "Dirstate for file %s may be wrong.\n" % f)
1631 1651
1632 1652 remove.sort()
1633 1653 for f in remove:
@@ -26,7 +26,6 b' 3aa14bbc23d9 tip'
26 26 + hg update
27 27 merging file1
28 28 + hg diff
29 FIXME: This is a known bug:
30 29 + hg status
31 30 + hg id
32 31 3aa14bbc23d9 tip
@@ -4,6 +4,7 b' mkdir t'
4 4 cd t
5 5 hg init
6 6 echo "added file1" > file1
7 echo "another line of text" >> file1
7 8 echo "added file2" > file2
8 9 hg add file1 file2
9 10 hg commit -m "added file1 and file2" -d "0 0" -u user
@@ -3,36 +3,37 b''
3 3 + hg commit -m added file1 and file2 -d 0 0 -u user
4 4 + hg commit -m changed file1 -d 0 0 -u user
5 5 + hg -q log
6 1:3aa14bbc23d90e3f8b5b639b4a43d76509bae76c
7 0:8633637036c18f021d771208e16ae3508ab81d28
6 1:f4d7a8c73d231bc078e2a5e791325e55e8a4c252
7 0:232e179b3f294d467cfa66e1439bc5b0d44e4a93
8 8 + hg id
9 3aa14bbc23d9 tip
9 f4d7a8c73d23 tip
10 10 + hg update -C 0
11 11 + hg id
12 8633637036c1
12 232e179b3f29
13 13 + hg id
14 8633637036c1+
14 232e179b3f29+
15 15 + hg revert
16 16 + hg diff
17 17 + hg status
18 18 + hg id
19 8633637036c1
19 232e179b3f29
20 20 + hg update
21 21 + hg diff
22 22 + hg status
23 23 + hg id
24 3aa14bbc23d9 tip
24 f4d7a8c73d23 tip
25 25 + hg update -C 0
26 26 + hg update
27 27 merge: warning: conflicts during merge
28 28 merging file1
29 29 merging file1 failed!
30 30 + hg diff
31 diff -r 3aa14bbc23d9 file1
31 diff -r f4d7a8c73d23 file1
32 32 --- a/file1
33 33 +++ b/file1
34 @@ -1,2 +1,6 @@
34 @@ -1,3 +1,7 @@
35 35 added file1
36 another line of text
36 37 +<<<<<<<
37 38 +changed file1 different
38 39 +=======
@@ -41,20 +42,19 b' diff -r 3aa14bbc23d9 file1'
41 42 + hg status
42 43 M file1
43 44 + hg id
44 3aa14bbc23d9+ tip
45 f4d7a8c73d23+ tip
45 46 + hg revert
46 47 + hg diff
47 FIXME: This is a known bug:
48 48 + hg status
49 49 + hg id
50 3aa14bbc23d9 tip
50 f4d7a8c73d23 tip
51 51 + hg revert -r tip
52 52 + hg diff
53 53 + hg status
54 54 + hg id
55 3aa14bbc23d9 tip
55 f4d7a8c73d23 tip
56 56 + hg update -C
57 57 + hg diff
58 58 + hg status
59 59 + hg id
60 3aa14bbc23d9 tip
60 f4d7a8c73d23 tip
General Comments 0
You need to be logged in to leave comments. Login now