diff options
-rwxr-xr-x | scripts/combo-layer | 40 | ||||
-rw-r--r-- | scripts/combo-layer.conf.example | 13 |
2 files changed, 53 insertions, 0 deletions
diff --git a/scripts/combo-layer b/scripts/combo-layer index 6d24ce3ee1..cbff61803b 100755 --- a/scripts/combo-layer +++ b/scripts/combo-layer | |||
@@ -284,6 +284,46 @@ def action_init(conf, args): | |||
284 | runcmd("git branch -D %s" % refname, ldir) | 284 | runcmd("git branch -D %s" % refname, ldir) |
285 | # Make that the head revision. | 285 | # Make that the head revision. |
286 | runcmd("git checkout -b %s %s" % (name, initialrev)) | 286 | runcmd("git checkout -b %s %s" % (name, initialrev)) |
287 | # Optional: cut the history by replacing the given | ||
288 | # start point(s) with commits providing the same | ||
289 | # content (aka tree), but with commit information that | ||
290 | # makes it clear that this is an artifically created | ||
291 | # commit and nothing the original authors had anything | ||
292 | # to do with. | ||
293 | since_rev = repo.get('since_revision', '') | ||
294 | if since_rev: | ||
295 | committer = runcmd('git var GIT_AUTHOR_IDENT').strip() | ||
296 | # Same time stamp, no name. | ||
297 | author = re.sub('.* (\d+ [+-]\d+)', r'unknown <unknown> \1', committer) | ||
298 | logger.info('author %s' % author) | ||
299 | for rev in since_rev.split(): | ||
300 | # Resolve in component repo... | ||
301 | rev = runcmd('git log --oneline --no-abbrev-commit -n1 %s' % rev, ldir).split()[0] | ||
302 | # ... and then get the tree in current | ||
303 | # one. The commit should be in both repos with | ||
304 | # the same tree, but better check here. | ||
305 | tree = runcmd('git show -s --pretty=format:%%T %s' % rev).strip() | ||
306 | with tempfile.NamedTemporaryFile() as editor: | ||
307 | editor.write('''cat >$1 <<EOF | ||
308 | tree %s | ||
309 | author %s | ||
310 | committer %s | ||
311 | |||
312 | %s: squashed import of component | ||
313 | |||
314 | This commit copies the entire set of files as found in | ||
315 | %s %s | ||
316 | |||
317 | For more information about previous commits, see the | ||
318 | upstream repository. | ||
319 | |||
320 | Commit created by combo-layer. | ||
321 | EOF | ||
322 | ''' % (tree, author, committer, name, name, since_rev)) | ||
323 | editor.flush() | ||
324 | os.environ['GIT_EDITOR'] = 'sh %s' % editor.name | ||
325 | runcmd('git replace --edit %s' % rev) | ||
326 | |||
287 | # Optional: rewrite history to change commit messages or to move files. | 327 | # Optional: rewrite history to change commit messages or to move files. |
288 | if 'hook' in repo or dest_dir and dest_dir != ".": | 328 | if 'hook' in repo or dest_dir and dest_dir != ".": |
289 | filter_branch = ['git', 'filter-branch', '--force'] | 329 | filter_branch = ['git', 'filter-branch', '--force'] |
diff --git a/scripts/combo-layer.conf.example b/scripts/combo-layer.conf.example index 38bc53c59f..90e2b58723 100644 --- a/scripts/combo-layer.conf.example +++ b/scripts/combo-layer.conf.example | |||
@@ -63,11 +63,24 @@ last_revision = | |||
63 | # example: | 63 | # example: |
64 | # hook = combo-layer-hook-default.sh | 64 | # hook = combo-layer-hook-default.sh |
65 | 65 | ||
66 | # since_revision: | ||
67 | # since_revision = release-1-2 | ||
68 | # since_revision = 12345 abcdf | ||
69 | # | ||
70 | # If provided, truncate imported history during "combo-layer --history | ||
71 | # init" at the specified revision(s). More than one can be specified | ||
72 | # to cut off multiple component branches. | ||
73 | # | ||
74 | # The specified commits themselves do not get imported. Instead, an | ||
75 | # artificial commit with "unknown" author is created with a content | ||
76 | # that matches the original commit. | ||
77 | |||
66 | [oe-core] | 78 | [oe-core] |
67 | src_uri = git://git.openembedded.org/openembedded-core | 79 | src_uri = git://git.openembedded.org/openembedded-core |
68 | local_repo_dir = /home/kyu3/src/test/oecore | 80 | local_repo_dir = /home/kyu3/src/test/oecore |
69 | dest_dir = . | 81 | dest_dir = . |
70 | last_revision = | 82 | last_revision = |
83 | since_revision = some-tag-or-commit-on-master-branch | ||
71 | 84 | ||
72 | # It is also possible to embed python code in the config values. Similar | 85 | # It is also possible to embed python code in the config values. Similar |
73 | # to bitbake it considers every value starting with @ to be a python | 86 | # to bitbake it considers every value starting with @ to be a python |