Show More
@@ -7,6 +7,8 b'' | |||||
7 |
|
7 | |||
8 | set -e # bail out quickly on failure |
|
8 | set -e # bail out quickly on failure | |
9 |
|
9 | |||
|
10 | echo $1 $2 $3 | |||
|
11 | ||||
10 | LOCAL="$1" |
|
12 | LOCAL="$1" | |
11 | BASE="$2" |
|
13 | BASE="$2" | |
12 | OTHER="$3" |
|
14 | OTHER="$3" |
@@ -54,28 +54,8 b' class localrepository(object):' | |||||
54 | def hook(self, name, throw=False, **args): |
|
54 | def hook(self, name, throw=False, **args): | |
55 | def runhook(name, cmd): |
|
55 | def runhook(name, cmd): | |
56 | self.ui.note(_("running hook %s: %s\n") % (name, cmd)) |
|
56 | self.ui.note(_("running hook %s: %s\n") % (name, cmd)) | |
57 | old = {} |
|
57 | env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()]) | |
58 | for k, v in args.items(): |
|
58 | r = util.esystem(cmd, environ=env, cwd=self.root) | |
59 | k = k.upper() |
|
|||
60 | old['HG_' + k] = os.environ.get(k, None) |
|
|||
61 | old[k] = os.environ.get(k, None) |
|
|||
62 | os.environ['HG_' + k] = str(v) |
|
|||
63 | os.environ[k] = str(v) |
|
|||
64 |
|
||||
65 | try: |
|
|||
66 | # Hooks run in the repository root |
|
|||
67 | olddir = os.getcwd() |
|
|||
68 | os.chdir(self.root) |
|
|||
69 | r = os.system(cmd) |
|
|||
70 | finally: |
|
|||
71 | for k, v in old.items(): |
|
|||
72 | if v is not None: |
|
|||
73 | os.environ[k] = v |
|
|||
74 | else: |
|
|||
75 | del os.environ[k] |
|
|||
76 |
|
||||
77 | os.chdir(olddir) |
|
|||
78 |
|
||||
79 | if r: |
|
59 | if r: | |
80 | desc, r = util.explain_exit(r) |
|
60 | desc, r = util.explain_exit(r) | |
81 | if throw: |
|
61 | if throw: | |
@@ -231,7 +211,7 b' class localrepository(object):' | |||||
231 | self.opener("journal.dirstate", "w").write(ds) |
|
211 | self.opener("journal.dirstate", "w").write(ds) | |
232 |
|
212 | |||
233 | tr = transaction.transaction(self.ui.warn, self.opener, |
|
213 | tr = transaction.transaction(self.ui.warn, self.opener, | |
234 |
self.join("journal"), |
|
214 | self.join("journal"), | |
235 | aftertrans(self.path)) |
|
215 | aftertrans(self.path)) | |
236 | self.transhandle = tr |
|
216 | self.transhandle = tr | |
237 | return tr |
|
217 | return tr |
@@ -325,6 +325,29 b' def system(cmd, errprefix=None):' | |||||
325 | errmsg = "%s: %s" % (errprefix, errmsg) |
|
325 | errmsg = "%s: %s" % (errprefix, errmsg) | |
326 | raise Abort(errmsg) |
|
326 | raise Abort(errmsg) | |
327 |
|
327 | |||
|
328 | def esystem(cmd, environ={}, cwd=None): | |||
|
329 | '''enhanced shell command execution. | |||
|
330 | run with environment maybe modified, maybe in different dir.''' | |||
|
331 | oldenv = {} | |||
|
332 | for k in environ: | |||
|
333 | oldenv[k] = os.environ.get(k) | |||
|
334 | if cwd is not None: | |||
|
335 | oldcwd = os.getcwd() | |||
|
336 | try: | |||
|
337 | for k, v in environ.iteritems(): | |||
|
338 | os.environ[k] = str(v) | |||
|
339 | if cwd is not None and oldcwd != cwd: | |||
|
340 | os.chdir(cwd) | |||
|
341 | return os.system(cmd) | |||
|
342 | finally: | |||
|
343 | for k, v in oldenv.iteritems(): | |||
|
344 | if v is None: | |||
|
345 | del os.environ[k] | |||
|
346 | else: | |||
|
347 | os.environ[k] = v | |||
|
348 | if cwd is not None and oldcwd != cwd: | |||
|
349 | os.chdir(oldcwd) | |||
|
350 | ||||
328 | def rename(src, dst): |
|
351 | def rename(src, dst): | |
329 | """forcibly rename a file""" |
|
352 | """forcibly rename a file""" | |
330 | try: |
|
353 | try: |
General Comments 0
You need to be logged in to leave comments.
Login now