Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/DirstateBuilder.java @ 580:bd5926e24aa3
Respect unix flags for checkout/revert
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Fri, 19 Apr 2013 20:30:34 +0200 |
parents | 95bdcf75e71e |
children | 65c01508f002 |
comparison
equal
deleted
inserted
replaced
579:36e36b926747 | 580:bd5926e24aa3 |
---|---|
60 public void parents(Nodeid p1, Nodeid p2) { | 60 public void parents(Nodeid p1, Nodeid p2) { |
61 parent1 = p1 == null ? Nodeid.NULL : p1; | 61 parent1 = p1 == null ? Nodeid.NULL : p1; |
62 parent2 = p2 == null ? Nodeid.NULL : p2; | 62 parent2 = p2 == null ? Nodeid.NULL : p2; |
63 } | 63 } |
64 | 64 |
65 public void recordNormal(Path fname, Flags flags, int bytesWritten) { | 65 public void recordNormal(Path fname, int fmode, int mtime, int bytesWritten) { |
66 // Mercurial seems to write "n 0 -1 unset fname" on `hg --clean co -rev <earlier rev>` | |
67 // and the reason for 'force lookup' I suspect is a slight chance of simultaneous modification | |
68 // of the file by user that doesn't alter its size the very second dirstate is being written | |
69 // (or the file is being updated and the update brought in changes that didn't alter the file size - | |
70 // with size and timestamp set, later `hg status` won't notice these changes) | |
71 | |
72 // However, as long as we use this class to write clean copies of the files, we can put all the fields | |
73 // right away. | |
74 int fmode = flags == Flags.RegularFile ? 0666 : 0777; // FIXME actual unix flags | |
75 int mtime = (int) (System.currentTimeMillis() / 1000); | |
76 forget(fname); | 66 forget(fname); |
77 normal.put(fname, new HgDirstate.Record(fmode, bytesWritten, mtime, fname, null)); | 67 normal.put(fname, new HgDirstate.Record(fmode, bytesWritten, mtime, fname, null)); |
78 } | 68 } |
79 | 69 |
80 public void recordUncertain(Path fname) { | 70 public void recordUncertain(Path fname) { |