Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Side by Side Diff: git_number.py

Issue 222103006: git-number cannot commit-tree without user config (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Usage: %prog [options] [<commitref>]* 6 """Usage: %prog [options] [<commitref>]*
7 7
8 If no <commitref>'s are supplied, it defaults to HEAD. 8 If no <commitref>'s are supplied, it defaults to HEAD.
9 9
10 Calculates the generation number for one or more commits in a git repo. 10 Calculates the generation number for one or more commits in a git repo.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 This in particular saves the trees referred to by DIRTY_TREES. 127 This in particular saves the trees referred to by DIRTY_TREES.
128 """ 128 """
129 if not DIRTY_TREES: 129 if not DIRTY_TREES:
130 return 130 return
131 131
132 msg = 'git-number Added %s numbers' % sum(DIRTY_TREES.itervalues()) 132 msg = 'git-number Added %s numbers' % sum(DIRTY_TREES.itervalues())
133 133
134 idx = os.path.join(git.run('rev-parse', '--git-dir'), 'number.idx') 134 idx = os.path.join(git.run('rev-parse', '--git-dir'), 'number.idx')
135 env = os.environ.copy() 135 env = os.environ.copy()
136 env['GIT_INDEX_FILE'] = idx 136 env['GIT_INDEX_FILE'] = idx
137 # Git user.name and/or user.email may not be configured, so specifying them
agable 2014/04/02 23:29:47 Nonono. These environment variables, if present, o
138 # explicitly. They are not used, but requried by Git.
139 env['GIT_AUTHOR_NAME'] = 'git-number'
140 env['GIT_AUTHOR_EMAIL'] = 'chrome-infrastructure-team@google.com'
141 env['GIT_COMMITTER_NAME'] = env['GIT_AUTHOR_NAME']
142 env['GIT_COMMITTER_EMAIL'] = env['GIT_AUTHOR_EMAIL']
137 143
138 progress_message = 'Finalizing: (%%(count)d/%d)' % len(DIRTY_TREES) 144 progress_message = 'Finalizing: (%%(count)d/%d)' % len(DIRTY_TREES)
139 with git.ProgressPrinter(progress_message) as inc: 145 with git.ProgressPrinter(progress_message) as inc:
140 git.run('read-tree', REF, env=env) 146 git.run('read-tree', REF, env=env)
141 147
142 prefixes_trees = ((p, get_number_tree(p)) for p in sorted(DIRTY_TREES)) 148 prefixes_trees = ((p, get_number_tree(p)) for p in sorted(DIRTY_TREES))
143 updater = subprocess2.Popen(['git', 'update-index', '-z', '--index-info'], 149 updater = subprocess2.Popen(['git', 'update-index', '-z', '--index-info'],
144 stdin=subprocess2.PIPE, env=env) 150 stdin=subprocess2.PIPE, env=env)
145 151
146 with git.ScopedPool(kind=POOL_KIND) as leaf_pool: 152 with git.ScopedPool(kind=POOL_KIND) as leaf_pool:
147 for item in leaf_pool.imap(leaf_map_fn, prefixes_trees): 153 for item in leaf_pool.imap(leaf_map_fn, prefixes_trees):
148 updater.stdin.write(item) 154 updater.stdin.write(item)
149 inc() 155 inc()
150 156
151 updater.stdin.close() 157 updater.stdin.close()
152 updater.wait() 158 updater.wait()
153 assert updater.returncode == 0 159 assert updater.returncode == 0
154 160
155 tree_id = git.run('write-tree', env=env) 161 tree_id = git.run('write-tree', env=env)
156 commit_cmd = ['commit-tree', '-m', msg, '-p'] + git.hash_multi(REF) 162 commit_cmd = ['commit-tree', '-m', msg, '-p'] + git.hash_multi(REF)
157 for t in targets: 163 for t in targets:
158 commit_cmd.extend(['-p', binascii.hexlify(t)]) 164 commit_cmd.extend(['-p', binascii.hexlify(t)])
159 commit_cmd.append(tree_id) 165 commit_cmd.append(tree_id)
160 commit_hash = git.run(*commit_cmd) 166 commit_hash = git.run(*commit_cmd, env=env)
161 git.run('update-ref', REF, commit_hash) 167 git.run('update-ref', REF, commit_hash)
162 DIRTY_TREES.clear() 168 DIRTY_TREES.clear()
163 169
164 170
165 def preload_tree(prefix): 171 def preload_tree(prefix):
166 """Returns the prefix and parsed tree object for the specified prefix.""" 172 """Returns the prefix and parsed tree object for the specified prefix."""
167 return prefix, get_number_tree(prefix) 173 return prefix, get_number_tree(prefix)
168 174
169 175
170 def all_prefixes(depth=PREFIX_LEN): 176 def all_prefixes(depth=PREFIX_LEN):
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 finalize(targets) 264 finalize(targets)
259 265
260 print '\n'.join(map(str, map(get_num, targets))) 266 print '\n'.join(map(str, map(get_num, targets)))
261 return 0 267 return 0
262 except KeyboardInterrupt: 268 except KeyboardInterrupt:
263 return 1 269 return 1
264 270
265 271
266 if __name__ == '__main__': # pragma: no cover 272 if __name__ == '__main__': # pragma: no cover
267 sys.exit(main()) 273 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698