Show More
@@ -247,7 +247,7 b' def sign(ui, repo, *revs, **opts):' | |||||
247 | repo.wfile(".hgsigs", "ab").write(sigmessage) |
|
247 | repo.wfile(".hgsigs", "ab").write(sigmessage) | |
248 |
|
248 | |||
249 | if '.hgsigs' not in repo.dirstate: |
|
249 | if '.hgsigs' not in repo.dirstate: | |
250 | repo.add([".hgsigs"]) |
|
250 | repo[None].add([".hgsigs"]) | |
251 |
|
251 | |||
252 | if opts["no_commit"]: |
|
252 | if opts["no_commit"]: | |
253 | return |
|
253 | return |
@@ -358,7 +358,7 b' def demo(ui, repo, *args, **opts):' | |||||
358 | demoitems('keywordmaps', kwmaps.iteritems()) |
|
358 | demoitems('keywordmaps', kwmaps.iteritems()) | |
359 | keywords = '$' + '$\n$'.join(sorted(kwmaps.keys())) + '$\n' |
|
359 | keywords = '$' + '$\n$'.join(sorted(kwmaps.keys())) + '$\n' | |
360 | repo.wopener(fn, 'w').write(keywords) |
|
360 | repo.wopener(fn, 'w').write(keywords) | |
361 | repo.add([fn]) |
|
361 | repo[None].add([fn]) | |
362 | ui.note(_('\nkeywords written to %s:\n') % fn) |
|
362 | ui.note(_('\nkeywords written to %s:\n') % fn) | |
363 | ui.note(keywords) |
|
363 | ui.note(keywords) | |
364 | repo.dirstate.setbranch('demobranch') |
|
364 | repo.dirstate.setbranch('demobranch') |
@@ -705,7 +705,7 b' class queue(object):' | |||||
705 | if not keep: |
|
705 | if not keep: | |
706 | r = self.qrepo() |
|
706 | r = self.qrepo() | |
707 | if r: |
|
707 | if r: | |
708 | r.remove(patches, True) |
|
708 | r[None].remove(patches, True) | |
709 | else: |
|
709 | else: | |
710 | for p in patches: |
|
710 | for p in patches: | |
711 | os.unlink(self.join(p)) |
|
711 | os.unlink(self.join(p)) | |
@@ -874,7 +874,7 b' class queue(object):' | |||||
874 | wlock = None |
|
874 | wlock = None | |
875 | r = self.qrepo() |
|
875 | r = self.qrepo() | |
876 | if r: |
|
876 | if r: | |
877 | r.add([patchfn]) |
|
877 | r[None].add([patchfn]) | |
878 | except: |
|
878 | except: | |
879 | repo.rollback() |
|
879 | repo.rollback() | |
880 | raise |
|
880 | raise | |
@@ -1713,7 +1713,7 b' class queue(object):' | |||||
1713 | self.series_dirty = 1 |
|
1713 | self.series_dirty = 1 | |
1714 | qrepo = self.qrepo() |
|
1714 | qrepo = self.qrepo() | |
1715 | if qrepo: |
|
1715 | if qrepo: | |
1716 | qrepo.add(added) |
|
1716 | qrepo[None].add(added) | |
1717 |
|
1717 | |||
1718 | def delete(ui, repo, *patches, **opts): |
|
1718 | def delete(ui, repo, *patches, **opts): | |
1719 | """remove patches from queue |
|
1719 | """remove patches from queue | |
@@ -1832,7 +1832,7 b' def qinit(ui, repo, create):' | |||||
1832 | fp.close() |
|
1832 | fp.close() | |
1833 | if not os.path.exists(r.wjoin('series')): |
|
1833 | if not os.path.exists(r.wjoin('series')): | |
1834 | r.wopener('series', 'w').close() |
|
1834 | r.wopener('series', 'w').close() | |
1835 | r.add(['.hgignore', 'series']) |
|
1835 | r[None].add(['.hgignore', 'series']) | |
1836 | commands.add(ui, r) |
|
1836 | commands.add(ui, r) | |
1837 | return 0 |
|
1837 | return 0 | |
1838 |
|
1838 | |||
@@ -2308,6 +2308,7 b' def rename(ui, repo, patch, name=None, *' | |||||
2308 | util.rename(q.join(patch), absdest) |
|
2308 | util.rename(q.join(patch), absdest) | |
2309 | r = q.qrepo() |
|
2309 | r = q.qrepo() | |
2310 | if r: |
|
2310 | if r: | |
|
2311 | wctx = r[None] | |||
2311 | wlock = r.wlock() |
|
2312 | wlock = r.wlock() | |
2312 | try: |
|
2313 | try: | |
2313 | if r.dirstate[patch] == 'a': |
|
2314 | if r.dirstate[patch] == 'a': | |
@@ -2315,9 +2316,9 b' def rename(ui, repo, patch, name=None, *' | |||||
2315 | r.dirstate.add(name) |
|
2316 | r.dirstate.add(name) | |
2316 | else: |
|
2317 | else: | |
2317 | if r.dirstate[name] == 'r': |
|
2318 | if r.dirstate[name] == 'r': | |
2318 |
|
|
2319 | wctx.undelete([name]) | |
2319 |
|
|
2320 | wctx.copy(patch, name) | |
2320 |
|
|
2321 | wctx.remove([patch], False) | |
2321 | finally: |
|
2322 | finally: | |
2322 | wlock.release() |
|
2323 | wlock.release() | |
2323 |
|
2324 |
@@ -311,12 +311,13 b' def addremove(repo, pats=[], opts={}, dr' | |||||
311 | copies[new] = old |
|
311 | copies[new] = old | |
312 |
|
312 | |||
313 | if not dry_run: |
|
313 | if not dry_run: | |
|
314 | wctx = repo[None] | |||
314 | wlock = repo.wlock() |
|
315 | wlock = repo.wlock() | |
315 | try: |
|
316 | try: | |
316 |
|
|
317 | wctx.remove(deleted) | |
317 |
|
|
318 | wctx.add(unknown) | |
318 | for new, old in copies.iteritems(): |
|
319 | for new, old in copies.iteritems(): | |
319 |
|
|
320 | wctx.copy(old, new) | |
320 | finally: |
|
321 | finally: | |
321 | wlock.release() |
|
322 | wlock.release() | |
322 |
|
323 | |||
@@ -329,6 +330,7 b' def copy(ui, repo, pats, opts, rename=Fa' | |||||
329 | targets = {} |
|
330 | targets = {} | |
330 | after = opts.get("after") |
|
331 | after = opts.get("after") | |
331 | dryrun = opts.get("dry_run") |
|
332 | dryrun = opts.get("dry_run") | |
|
333 | wctx = repo[None] | |||
332 |
|
334 | |||
333 | def walkpat(pat): |
|
335 | def walkpat(pat): | |
334 | srcs = [] |
|
336 | srcs = [] | |
@@ -421,12 +423,12 b' def copy(ui, repo, pats, opts, rename=Fa' | |||||
421 | "data will be stored for %s.\n") |
|
423 | "data will be stored for %s.\n") | |
422 | % (repo.pathto(origsrc, cwd), reltarget)) |
|
424 | % (repo.pathto(origsrc, cwd), reltarget)) | |
423 | if repo.dirstate[abstarget] in '?r' and not dryrun: |
|
425 | if repo.dirstate[abstarget] in '?r' and not dryrun: | |
424 |
|
|
426 | wctx.add([abstarget]) | |
425 | elif not dryrun: |
|
427 | elif not dryrun: | |
426 |
|
|
428 | wctx.copy(origsrc, abstarget) | |
427 |
|
429 | |||
428 | if rename and not dryrun: |
|
430 | if rename and not dryrun: | |
429 |
|
|
431 | wctx.remove([abssrc], not after) | |
430 |
|
432 | |||
431 | # pat: ossep |
|
433 | # pat: ossep | |
432 | # dest ossep |
|
434 | # dest ossep |
@@ -56,7 +56,7 b' def add(ui, repo, *pats, **opts):' | |||||
56 | if ui.verbose or not exact: |
|
56 | if ui.verbose or not exact: | |
57 | ui.status(_('adding %s\n') % m.rel(f)) |
|
57 | ui.status(_('adding %s\n') % m.rel(f)) | |
58 | if not opts.get('dry_run'): |
|
58 | if not opts.get('dry_run'): | |
59 | bad += [f for f in repo.add(names) if f in m.files()] |
|
59 | bad += [f for f in repo[None].add(names) if f in m.files()] | |
60 | return bad and 1 or 0 |
|
60 | return bad and 1 or 0 | |
61 |
|
61 | |||
62 | def addremove(ui, repo, *pats, **opts): |
|
62 | def addremove(ui, repo, *pats, **opts): | |
@@ -1314,7 +1314,7 b' def forget(ui, repo, *pats, **opts):' | |||||
1314 | if ui.verbose or not m.exact(f): |
|
1314 | if ui.verbose or not m.exact(f): | |
1315 | ui.status(_('removing %s\n') % m.rel(f)) |
|
1315 | ui.status(_('removing %s\n') % m.rel(f)) | |
1316 |
|
1316 | |||
1317 | repo.remove(forget, unlink=False) |
|
1317 | repo[None].remove(forget, unlink=False) | |
1318 | return errs |
|
1318 | return errs | |
1319 |
|
1319 | |||
1320 | def grep(ui, repo, pattern, *pats, **opts): |
|
1320 | def grep(ui, repo, pattern, *pats, **opts): | |
@@ -2669,8 +2669,8 b' def remove(ui, repo, *pats, **opts):' | |||||
2669 | if ui.verbose or not m.exact(f): |
|
2669 | if ui.verbose or not m.exact(f): | |
2670 | ui.status(_('removing %s\n') % m.rel(f)) |
|
2670 | ui.status(_('removing %s\n') % m.rel(f)) | |
2671 |
|
2671 | |||
2672 | repo.forget(forget) |
|
2672 | repo[None].forget(forget) | |
2673 | repo.remove(remove, unlink=not after) |
|
2673 | repo[None].remove(remove, unlink=not after) | |
2674 | return ret |
|
2674 | return ret | |
2675 |
|
2675 | |||
2676 | def rename(ui, repo, *pats, **opts): |
|
2676 | def rename(ui, repo, *pats, **opts): |
@@ -8,7 +8,7 b'' | |||||
8 | from node import nullid, nullrev, short, hex |
|
8 | from node import nullid, nullrev, short, hex | |
9 | from i18n import _ |
|
9 | from i18n import _ | |
10 | import ancestor, bdiff, error, util, subrepo, patch |
|
10 | import ancestor, bdiff, error, util, subrepo, patch | |
11 | import os, errno |
|
11 | import os, errno, stat | |
12 |
|
12 | |||
13 | propertycache = util.propertycache |
|
13 | propertycache = util.propertycache | |
14 |
|
14 | |||
@@ -761,6 +761,103 b' class workingctx(changectx):' | |||||
761 | self.modified() or self.added() or self.removed() or |
|
761 | self.modified() or self.added() or self.removed() or | |
762 | (missing and self.deleted())) |
|
762 | (missing and self.deleted())) | |
763 |
|
763 | |||
|
764 | def add(self, list): | |||
|
765 | wlock = self._repo.wlock() | |||
|
766 | ui, ds = self._repo.ui, self._repo.dirstate | |||
|
767 | try: | |||
|
768 | rejected = [] | |||
|
769 | for f in list: | |||
|
770 | p = self._repo.wjoin(f) | |||
|
771 | try: | |||
|
772 | st = os.lstat(p) | |||
|
773 | except: | |||
|
774 | ui.warn(_("%s does not exist!\n") % f) | |||
|
775 | rejected.append(f) | |||
|
776 | continue | |||
|
777 | if st.st_size > 10000000: | |||
|
778 | ui.warn(_("%s: up to %d MB of RAM may be required " | |||
|
779 | "to manage this file\n" | |||
|
780 | "(use 'hg revert %s' to cancel the " | |||
|
781 | "pending addition)\n") | |||
|
782 | % (f, 3 * st.st_size // 1000000, f)) | |||
|
783 | if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)): | |||
|
784 | ui.warn(_("%s not added: only files and symlinks " | |||
|
785 | "supported currently\n") % f) | |||
|
786 | rejected.append(p) | |||
|
787 | elif ds[f] in 'amn': | |||
|
788 | ui.warn(_("%s already tracked!\n") % f) | |||
|
789 | elif ds[f] == 'r': | |||
|
790 | ds.normallookup(f) | |||
|
791 | else: | |||
|
792 | ds.add(f) | |||
|
793 | return rejected | |||
|
794 | finally: | |||
|
795 | wlock.release() | |||
|
796 | ||||
|
797 | def forget(self, list): | |||
|
798 | wlock = self._repo.wlock() | |||
|
799 | try: | |||
|
800 | for f in list: | |||
|
801 | if self._repo.dirstate[f] != 'a': | |||
|
802 | self._repo.ui.warn(_("%s not added!\n") % f) | |||
|
803 | else: | |||
|
804 | self._repo.dirstate.forget(f) | |||
|
805 | finally: | |||
|
806 | wlock.release() | |||
|
807 | ||||
|
808 | def remove(self, list, unlink=False): | |||
|
809 | if unlink: | |||
|
810 | for f in list: | |||
|
811 | try: | |||
|
812 | util.unlink(self._repo.wjoin(f)) | |||
|
813 | except OSError, inst: | |||
|
814 | if inst.errno != errno.ENOENT: | |||
|
815 | raise | |||
|
816 | wlock = self._repo.wlock() | |||
|
817 | try: | |||
|
818 | for f in list: | |||
|
819 | if unlink and os.path.exists(self._repo.wjoin(f)): | |||
|
820 | self._repo.ui.warn(_("%s still exists!\n") % f) | |||
|
821 | elif self._repo.dirstate[f] == 'a': | |||
|
822 | self._repo.dirstate.forget(f) | |||
|
823 | elif f not in self._repo.dirstate: | |||
|
824 | self._repo.ui.warn(_("%s not tracked!\n") % f) | |||
|
825 | else: | |||
|
826 | self._repo.dirstate.remove(f) | |||
|
827 | finally: | |||
|
828 | wlock.release() | |||
|
829 | ||||
|
830 | def undelete(self, list): | |||
|
831 | pctxs = self.parents() | |||
|
832 | wlock = self._repo.wlock() | |||
|
833 | try: | |||
|
834 | for f in list: | |||
|
835 | if self._repo.dirstate[f] != 'r': | |||
|
836 | self._repo.ui.warn(_("%s not removed!\n") % f) | |||
|
837 | else: | |||
|
838 | fctx = f in pctxs[0] and pctxs[0] or pctxs[1] | |||
|
839 | t = fctx.data() | |||
|
840 | self._repo.wwrite(f, t, fctx.flags()) | |||
|
841 | self._repo.dirstate.normal(f) | |||
|
842 | finally: | |||
|
843 | wlock.release() | |||
|
844 | ||||
|
845 | def copy(self, source, dest): | |||
|
846 | p = self._repo.wjoin(dest) | |||
|
847 | if not (os.path.exists(p) or os.path.islink(p)): | |||
|
848 | self._repo.ui.warn(_("%s does not exist!\n") % dest) | |||
|
849 | elif not (os.path.isfile(p) or os.path.islink(p)): | |||
|
850 | self._repo.ui.warn(_("copy failed: %s is not a file or a " | |||
|
851 | "symbolic link\n") % dest) | |||
|
852 | else: | |||
|
853 | wlock = self._repo.wlock() | |||
|
854 | try: | |||
|
855 | if self._repo.dirstate[dest] in '?r': | |||
|
856 | self._repo.dirstate.add(dest) | |||
|
857 | self._repo.dirstate.copy(source, dest) | |||
|
858 | finally: | |||
|
859 | wlock.release() | |||
|
860 | ||||
764 | class workingfilectx(filectx): |
|
861 | class workingfilectx(filectx): | |
765 | """A workingfilectx object makes access to data related to a particular |
|
862 | """A workingfilectx object makes access to data related to a particular | |
766 | file in the working directory convenient.""" |
|
863 | file in the working directory convenient.""" |
@@ -16,7 +16,7 b' import merge as mergemod' | |||||
16 | import tags as tagsmod |
|
16 | import tags as tagsmod | |
17 | import url as urlmod |
|
17 | import url as urlmod | |
18 | from lock import release |
|
18 | from lock import release | |
19 |
import weakref |
|
19 | import weakref, errno, os, time, inspect | |
20 | propertycache = util.propertycache |
|
20 | propertycache = util.propertycache | |
21 |
|
21 | |||
22 | class localrepository(repo.repository): |
|
22 | class localrepository(repo.repository): | |
@@ -210,7 +210,7 b' class localrepository(repo.repository):' | |||||
210 | writetags(fp, names, encoding.fromlocal, prevtags) |
|
210 | writetags(fp, names, encoding.fromlocal, prevtags) | |
211 |
|
211 | |||
212 | if '.hgtags' not in self.dirstate: |
|
212 | if '.hgtags' not in self.dirstate: | |
213 | self.add(['.hgtags']) |
|
213 | self[None].add(['.hgtags']) | |
214 |
|
214 | |||
215 | m = matchmod.exact(self.root, '', ['.hgtags']) |
|
215 | m = matchmod.exact(self.root, '', ['.hgtags']) | |
216 | tagnode = self.commit(message, user, date, extra=extra, match=m) |
|
216 | tagnode = self.commit(message, user, date, extra=extra, match=m) | |
@@ -1112,103 +1112,6 b' class localrepository(repo.repository):' | |||||
1112 | [l.sort() for l in r] |
|
1112 | [l.sort() for l in r] | |
1113 | return r |
|
1113 | return r | |
1114 |
|
1114 | |||
1115 | def add(self, list): |
|
|||
1116 | wlock = self.wlock() |
|
|||
1117 | try: |
|
|||
1118 | rejected = [] |
|
|||
1119 | for f in list: |
|
|||
1120 | p = self.wjoin(f) |
|
|||
1121 | try: |
|
|||
1122 | st = os.lstat(p) |
|
|||
1123 | except: |
|
|||
1124 | self.ui.warn(_("%s does not exist!\n") % f) |
|
|||
1125 | rejected.append(f) |
|
|||
1126 | continue |
|
|||
1127 | if st.st_size > 10000000: |
|
|||
1128 | self.ui.warn(_("%s: up to %d MB of RAM may be required " |
|
|||
1129 | "to manage this file\n" |
|
|||
1130 | "(use 'hg revert %s' to cancel the " |
|
|||
1131 | "pending addition)\n") |
|
|||
1132 | % (f, 3 * st.st_size // 1000000, f)) |
|
|||
1133 | if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)): |
|
|||
1134 | self.ui.warn(_("%s not added: only files and symlinks " |
|
|||
1135 | "supported currently\n") % f) |
|
|||
1136 | rejected.append(p) |
|
|||
1137 | elif self.dirstate[f] in 'amn': |
|
|||
1138 | self.ui.warn(_("%s already tracked!\n") % f) |
|
|||
1139 | elif self.dirstate[f] == 'r': |
|
|||
1140 | self.dirstate.normallookup(f) |
|
|||
1141 | else: |
|
|||
1142 | self.dirstate.add(f) |
|
|||
1143 | return rejected |
|
|||
1144 | finally: |
|
|||
1145 | wlock.release() |
|
|||
1146 |
|
||||
1147 | def forget(self, list): |
|
|||
1148 | wlock = self.wlock() |
|
|||
1149 | try: |
|
|||
1150 | for f in list: |
|
|||
1151 | if self.dirstate[f] != 'a': |
|
|||
1152 | self.ui.warn(_("%s not added!\n") % f) |
|
|||
1153 | else: |
|
|||
1154 | self.dirstate.forget(f) |
|
|||
1155 | finally: |
|
|||
1156 | wlock.release() |
|
|||
1157 |
|
||||
1158 | def remove(self, list, unlink=False): |
|
|||
1159 | if unlink: |
|
|||
1160 | for f in list: |
|
|||
1161 | try: |
|
|||
1162 | util.unlink(self.wjoin(f)) |
|
|||
1163 | except OSError, inst: |
|
|||
1164 | if inst.errno != errno.ENOENT: |
|
|||
1165 | raise |
|
|||
1166 | wlock = self.wlock() |
|
|||
1167 | try: |
|
|||
1168 | for f in list: |
|
|||
1169 | if unlink and os.path.exists(self.wjoin(f)): |
|
|||
1170 | self.ui.warn(_("%s still exists!\n") % f) |
|
|||
1171 | elif self.dirstate[f] == 'a': |
|
|||
1172 | self.dirstate.forget(f) |
|
|||
1173 | elif f not in self.dirstate: |
|
|||
1174 | self.ui.warn(_("%s not tracked!\n") % f) |
|
|||
1175 | else: |
|
|||
1176 | self.dirstate.remove(f) |
|
|||
1177 | finally: |
|
|||
1178 | wlock.release() |
|
|||
1179 |
|
||||
1180 | def undelete(self, list): |
|
|||
1181 | manifests = [self.manifest.read(self.changelog.read(p)[0]) |
|
|||
1182 | for p in self.dirstate.parents() if p != nullid] |
|
|||
1183 | wlock = self.wlock() |
|
|||
1184 | try: |
|
|||
1185 | for f in list: |
|
|||
1186 | if self.dirstate[f] != 'r': |
|
|||
1187 | self.ui.warn(_("%s not removed!\n") % f) |
|
|||
1188 | else: |
|
|||
1189 | m = f in manifests[0] and manifests[0] or manifests[1] |
|
|||
1190 | t = self.file(f).read(m[f]) |
|
|||
1191 | self.wwrite(f, t, m.flags(f)) |
|
|||
1192 | self.dirstate.normal(f) |
|
|||
1193 | finally: |
|
|||
1194 | wlock.release() |
|
|||
1195 |
|
||||
1196 | def copy(self, source, dest): |
|
|||
1197 | p = self.wjoin(dest) |
|
|||
1198 | if not (os.path.exists(p) or os.path.islink(p)): |
|
|||
1199 | self.ui.warn(_("%s does not exist!\n") % dest) |
|
|||
1200 | elif not (os.path.isfile(p) or os.path.islink(p)): |
|
|||
1201 | self.ui.warn(_("copy failed: %s is not a file or a " |
|
|||
1202 | "symbolic link\n") % dest) |
|
|||
1203 | else: |
|
|||
1204 | wlock = self.wlock() |
|
|||
1205 | try: |
|
|||
1206 | if self.dirstate[dest] in '?r': |
|
|||
1207 | self.dirstate.add(dest) |
|
|||
1208 | self.dirstate.copy(source, dest) |
|
|||
1209 | finally: |
|
|||
1210 | wlock.release() |
|
|||
1211 |
|
||||
1212 | def heads(self, start=None): |
|
1115 | def heads(self, start=None): | |
1213 | heads = self.changelog.heads(start) |
|
1116 | heads = self.changelog.heads(start) | |
1214 | # sort the output in rev descending order |
|
1117 | # sort the output in rev descending order |
@@ -1226,10 +1226,13 b' def updatedir(ui, repo, patches, similar' | |||||
1226 | copies.append((gp.oldpath, gp.path)) |
|
1226 | copies.append((gp.oldpath, gp.path)) | |
1227 | elif gp.op == 'DELETE': |
|
1227 | elif gp.op == 'DELETE': | |
1228 | removes.add(gp.path) |
|
1228 | removes.add(gp.path) | |
|
1229 | ||||
|
1230 | wctx = repo[None] | |||
1229 | for src, dst in copies: |
|
1231 | for src, dst in copies: | |
1230 |
|
|
1232 | wctx.copy(src, dst) | |
1231 | if (not similarity) and removes: |
|
1233 | if (not similarity) and removes: | |
1232 |
|
|
1234 | wctx.remove(sorted(removes), True) | |
|
1235 | ||||
1233 | for f in patches: |
|
1236 | for f in patches: | |
1234 | gp = patches[f] |
|
1237 | gp = patches[f] | |
1235 | if gp and gp.mode: |
|
1238 | if gp and gp.mode: |
@@ -13,7 +13,7 b' f.close()' | |||||
13 | os.utime('foo', (1000, 1000)) |
|
13 | os.utime('foo', (1000, 1000)) | |
14 |
|
14 | |||
15 | # add+commit 'foo' |
|
15 | # add+commit 'foo' | |
16 | repo.add(['foo']) |
|
16 | repo[None].add(['foo']) | |
17 | repo.commit(text='commit1', date="0 0") |
|
17 | repo.commit(text='commit1', date="0 0") | |
18 |
|
18 | |||
19 | print "workingfilectx.date =", repo[None]['foo'].date() |
|
19 | print "workingfilectx.date =", repo[None]['foo'].date() |
@@ -13,7 +13,7 b' def addcommit(name, time):' | |||||
13 | f = open(name, 'w') |
|
13 | f = open(name, 'w') | |
14 | f.write('%s\n' % name) |
|
14 | f.write('%s\n' % name) | |
15 | f.close() |
|
15 | f.close() | |
16 | repo.add([name]) |
|
16 | repo[None].add([name]) | |
17 | commit(name, time) |
|
17 | commit(name, time) | |
18 |
|
18 | |||
19 | def update(rev): |
|
19 | def update(rev): |
General Comments 0
You need to be logged in to leave comments.
Login now