15 |
15 |
16 repomap = {} |
16 repomap = {} |
17 |
17 |
18 class queue: |
18 class queue: |
19 def __init__(self, ui, path, patchdir=None): |
19 def __init__(self, ui, path, patchdir=None): |
20 self.opener = util.opener(path) |
|
21 self.basepath = path |
20 self.basepath = path |
22 if patchdir: |
21 if patchdir: |
23 self.path = patchdir |
22 self.path = patchdir |
24 else: |
23 else: |
25 self.path = os.path.join(path, "patches") |
24 self.path = os.path.join(path, "patches") |
|
25 self.opener = util.opener(self.path) |
26 self.ui = ui |
26 self.ui = ui |
27 self.applied = [] |
27 self.applied = [] |
28 self.full_series = [] |
28 self.full_series = [] |
29 self.applied_dirty = 0 |
29 self.applied_dirty = 0 |
30 self.series_dirty = 0 |
30 self.series_dirty = 0 |
31 self.series_path = os.path.join(self.path, "series") |
31 self.series_path = "series" |
32 self.status_path = os.path.join(self.path, "status") |
32 self.status_path = "status" |
33 |
33 |
34 s = self.series_path |
34 if os.path.exists(os.path.join(self.path, self.series_path)): |
35 if os.path.exists(s): |
35 self.full_series = self.opener(self.series_path).read().splitlines() |
36 self.full_series = self.opener(s).read().splitlines() |
|
37 self.read_series(self.full_series) |
36 self.read_series(self.full_series) |
38 |
37 |
39 s = self.status_path |
38 if os.path.exists(os.path.join(self.path, self.status_path)): |
40 if os.path.exists(s): |
39 self.applied = self.opener(self.status_path).read().splitlines() |
41 self.applied = self.opener(s).read().splitlines() |
|
42 |
40 |
43 def find_series(self, patch): |
41 def find_series(self, patch): |
44 pre = re.compile("(\s*)([^#]+)") |
42 pre = re.compile("(\s*)([^#]+)") |
45 index = 0 |
43 index = 0 |
46 for l in self.full_series: |
44 for l in self.full_series: |
184 message, comments, user, patchfound = mergeq.readheaders(patch) |
182 message, comments, user, patchfound = mergeq.readheaders(patch) |
185 except: |
183 except: |
186 self.ui.warn("Unable to read %s\n" % patch) |
184 self.ui.warn("Unable to read %s\n" % patch) |
187 sys.exit(1) |
185 sys.exit(1) |
188 |
186 |
189 patchf = self.opener(os.path.join(self.path, patch), "w") |
187 patchf = self.opener(patch, "w") |
190 if comments: |
188 if comments: |
191 comments = "\n".join(comments) + '\n\n' |
189 comments = "\n".join(comments) + '\n\n' |
192 patchf.write(comments) |
190 patchf.write(comments) |
193 commands.dodiff(patchf, self.ui, repo, head, n) |
191 commands.dodiff(patchf, self.ui, repo, head, n) |
194 patchf.close() |
192 patchf.close() |
400 self.full_series[insert:insert] = [patch] |
398 self.full_series[insert:insert] = [patch] |
401 self.applied.append(revlog.hex(n) + ":" + patch) |
399 self.applied.append(revlog.hex(n) + ":" + patch) |
402 self.read_series(self.full_series) |
400 self.read_series(self.full_series) |
403 self.series_dirty = 1 |
401 self.series_dirty = 1 |
404 self.applied_dirty = 1 |
402 self.applied_dirty = 1 |
405 p = self.opener(os.path.join(self.path, patch), "w") |
403 p = self.opener(patch, "w") |
406 if msg: |
404 if msg: |
407 msg = msg + "\n" |
405 msg = msg + "\n" |
408 p.write(msg) |
406 p.write(msg) |
409 p.close() |
407 p.close() |
410 wlock = None |
408 wlock = None |
714 top = revlog.bin(top) |
712 top = revlog.bin(top) |
715 cparents = repo.changelog.parents(top) |
713 cparents = repo.changelog.parents(top) |
716 patchparent = self.qparents(repo, top) |
714 patchparent = self.qparents(repo, top) |
717 message, comments, user, patchfound = self.readheaders(patch) |
715 message, comments, user, patchfound = self.readheaders(patch) |
718 |
716 |
719 patchf = self.opener(os.path.join(self.path, patch), "w") |
717 patchf = self.opener(patch, "w") |
720 if comments: |
718 if comments: |
721 comments = "\n".join(comments) + '\n\n' |
719 comments = "\n".join(comments) + '\n\n' |
722 patchf.write(comments) |
720 patchf.write(comments) |
723 |
721 |
724 tip = repo.changelog.tip() |
722 tip = repo.changelog.tip() |
833 list = [] |
831 list = [] |
834 for root, dirs, files in os.walk(self.path): |
832 for root, dirs, files in os.walk(self.path): |
835 d = root[len(self.path) + 1:] |
833 d = root[len(self.path) + 1:] |
836 for f in files: |
834 for f in files: |
837 fl = os.path.join(d, f) |
835 fl = os.path.join(d, f) |
838 if (fl not in self.series and fl != "status" and |
836 if (fl not in self.series and |
839 fl != "series" and not fl.startswith('.')): |
837 fl not in (self.status_path, self.series_path) |
|
838 and not fl.startswith('.')): |
840 list.append(fl) |
839 list.append(fl) |
841 list.sort() |
840 list.sort() |
842 if list: |
841 if list: |
843 for x in list: |
842 for x in list: |
844 if self.ui.verbose: |
843 if self.ui.verbose: |
1010 if not patch: |
1009 if not patch: |
1011 patch = os.path.split(filename)[1] |
1010 patch = os.path.split(filename)[1] |
1012 if not force and os.path.isfile(os.path.join(self.path, patch)): |
1011 if not force and os.path.isfile(os.path.join(self.path, patch)): |
1013 self.ui.warn("patch %s already exists\n" % patch) |
1012 self.ui.warn("patch %s already exists\n" % patch) |
1014 sys.exit(1) |
1013 sys.exit(1) |
1015 patchf = self.opener(os.path.join(self.path, patch), "w") |
1014 patchf = self.opener(patch, "w") |
1016 patchf.write(text) |
1015 patchf.write(text) |
1017 if patch in self.series: |
1016 if patch in self.series: |
1018 self.ui.warn("patch %s is already in the series file\n" % patch) |
1017 self.ui.warn("patch %s is already in the series file\n" % patch) |
1019 sys.exit(1) |
1018 sys.exit(1) |
1020 index = self.series_end() + i |
1019 index = self.series_end() + i |
1203 newpath = savename(path) |
1202 newpath = savename(path) |
1204 ui.warn("copy %s to %s\n" % (path, newpath)) |
1203 ui.warn("copy %s to %s\n" % (path, newpath)) |
1205 util.copyfiles(path, newpath) |
1204 util.copyfiles(path, newpath) |
1206 if opts['empty']: |
1205 if opts['empty']: |
1207 try: |
1206 try: |
1208 os.unlink(q.status_path) |
1207 os.unlink(os.path.join(q.path, q.status_path)) |
1209 except: |
1208 except: |
1210 pass |
1209 pass |
1211 return 0 |
1210 return 0 |
1212 |
1211 |
1213 def strip(ui, repo, rev, **opts): |
1212 def strip(ui, repo, rev, **opts): |