Index: roll_dep.py |
diff --git a/roll_dep.py b/roll_dep.py |
index 953b0e106d3bb207079116ef9064ce7a2c16a816..1144d78a20efa18831ec78fac82262e48d24ca90 100755 |
--- a/roll_dep.py |
+++ b/roll_dep.py |
@@ -293,10 +293,9 @@ def update_deps_entry(deps_lines, deps_ast, value_node, new_rev, comment): |
else: |
deps_lines[line_idx] = content.rstrip() |
-def update_deps(soln_path, dep_path, dep_name, new_rev, comment): |
+def update_deps(deps_file, dep_path, dep_name, new_rev, comment): |
"""Update the DEPS file with the new git revision.""" |
commit_msg = '' |
- deps_file = os.path.join(soln_path, 'DEPS') |
with open(deps_file) as fh: |
deps_content = fh.read() |
deps_locals = {} |
@@ -333,7 +332,11 @@ def update_deps(soln_path, dep_path, dep_name, new_rev, comment): |
with open(deps_file, 'w') as fh: |
for line in deps_lines: |
print >> fh, line |
- with open(os.path.join(soln_path, '.git', 'MERGE_MSG'), 'a') as fh: |
+ deps_file_dir = os.path.normpath(os.path.dirname(deps_file)) |
+ deps_file_root = Popen( |
+ ['git', 'rev-parse', '--show-toplevel'], |
+ cwd=deps_file_dir, stdout=PIPE).communicate()[0].strip() |
+ with open(os.path.join(deps_file_root, '.git', 'MERGE_MSG'), 'w') as fh: |
fh.write(commit_msg) |
else: |
print 'Could not find an entry in %s to update.' % deps_file |
@@ -341,20 +344,27 @@ def update_deps(soln_path, dep_path, dep_name, new_rev, comment): |
def main(argv): |
- if len(argv) != 2 : |
- print >> sys.stderr, 'Usage: roll_dep.py <dep path> <svn revision>' |
+ if len(argv) not in (2, 3): |
+ print >> sys.stderr, ( |
+ 'Usage: roll_dep.py <dep path> <svn revision> [ <DEPS file> ]') |
return 1 |
- (dep_path, revision) = argv[0:2] |
- dep_path = platform_path(dep_path) |
- assert os.path.isdir(dep_path), 'No such directory: %s' % dep_path |
+ (arg_dep_path, revision) = argv[0:2] |
gclient_root = find_gclient_root() |
- soln = get_solution(gclient_root, dep_path) |
- soln_path = os.path.relpath(os.path.join(gclient_root, soln['name'])) |
+ dep_path = platform_path(arg_dep_path) |
+ if not os.path.exists(dep_path): |
+ dep_path = os.path.join(gclient_root, dep_path) |
+ assert os.path.isdir(dep_path), 'No such directory: %s' % arg_dep_path |
+ if len(argv) > 2: |
+ deps_file = argv[2] |
+ else: |
+ soln = get_solution(gclient_root, dep_path) |
+ soln_path = os.path.relpath(os.path.join(gclient_root, soln['name'])) |
+ deps_file = os.path.join(soln_path, 'DEPS') |
dep_name = posix_path(os.path.relpath(dep_path, gclient_root)) |
(git_rev, svn_rev) = get_git_revision(dep_path, revision) |
comment = ('from svn revision %s' % svn_rev) if svn_rev else None |
assert git_rev, 'Could not find git revision matching %s.' % revision |
- return update_deps(soln_path, dep_path, dep_name, git_rev, comment) |
+ return update_deps(deps_file, dep_path, dep_name, git_rev, comment) |
if __name__ == '__main__': |
sys.exit(main(sys.argv[1:])) |