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 a |
|
|
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 |
se |
|
|
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 |
|
|
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, |
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
571 |
elif |
|
|
575 | modified.append(fn) | |
|
576 | elif c[3] != s.st_mtime: | |
|
572 | 577 | lookup.append(fn) |
|
573 | 578 | else: |
|
574 |
|
|
|
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 |
|
|
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 |
|
|
31 | diff -r f4d7a8c73d23 file1 | |
|
32 | 32 | --- a/file1 |
|
33 | 33 | +++ b/file1 |
|
34 |
@@ -1, |
|
|
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