diff options
| -rwxr-xr-x | scripts/oe-git-archive | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/scripts/oe-git-archive b/scripts/oe-git-archive index 1805ab3260..ab19cb9aa3 100755 --- a/scripts/oe-git-archive +++ b/scripts/oe-git-archive | |||
| @@ -83,7 +83,7 @@ def init_git_repo(path, no_create, bare): | |||
| 83 | return repo | 83 | return repo |
| 84 | 84 | ||
| 85 | 85 | ||
| 86 | def git_commit_data(repo, data_dir, branch, message, exclude): | 86 | def git_commit_data(repo, data_dir, branch, message, exclude, notes): |
| 87 | """Commit data into a Git repository""" | 87 | """Commit data into a Git repository""" |
| 88 | log.info("Committing data into to branch %s", branch) | 88 | log.info("Committing data into to branch %s", branch) |
| 89 | tmp_index = os.path.join(repo.git_dir, 'index.oe-git-archive') | 89 | tmp_index = os.path.join(repo.git_dir, 'index.oe-git-archive') |
| @@ -106,6 +106,12 @@ def git_commit_data(repo, data_dir, branch, message, exclude): | |||
| 106 | git_cmd += ['-p', parent] | 106 | git_cmd += ['-p', parent] |
| 107 | commit = repo.run_cmd(git_cmd, env_update) | 107 | commit = repo.run_cmd(git_cmd, env_update) |
| 108 | 108 | ||
| 109 | # Create git notes | ||
| 110 | for ref, filename in notes: | ||
| 111 | ref = ref.format(branch_name=branch) | ||
| 112 | repo.run_cmd(['notes', '--ref', ref, 'add', | ||
| 113 | '-F', os.path.abspath(filename), commit]) | ||
| 114 | |||
| 109 | # Update branch head | 115 | # Update branch head |
| 110 | git_cmd = ['update-ref', 'refs/heads/' + branch, commit] | 116 | git_cmd = ['update-ref', 'refs/heads/' + branch, commit] |
| 111 | if parent: | 117 | if parent: |
| @@ -191,6 +197,13 @@ def parse_args(argv): | |||
| 191 | parser.add_argument('--exclude', action='append', default=[], | 197 | parser.add_argument('--exclude', action='append', default=[], |
| 192 | help="Glob to exclude files from the commit. Relative " | 198 | help="Glob to exclude files from the commit. Relative " |
| 193 | "to DATA_DIR. May be specified multiple times") | 199 | "to DATA_DIR. May be specified multiple times") |
| 200 | parser.add_argument('--notes', nargs=2, action='append', default=[], | ||
| 201 | metavar=('GIT_REF', 'FILE'), | ||
| 202 | help="Add a file as a note under refs/notes/GIT_REF. " | ||
| 203 | "{branch_name} in GIT_REF will be expanded to the " | ||
| 204 | "actual target branch name (specified by " | ||
| 205 | "--branch-name). This option may be specified " | ||
| 206 | "multiple times.") | ||
| 194 | parser.add_argument('data_dir', metavar='DATA_DIR', | 207 | parser.add_argument('data_dir', metavar='DATA_DIR', |
| 195 | help="Data to commit") | 208 | help="Data to commit") |
| 196 | return parser.parse_args(argv) | 209 | return parser.parse_args(argv) |
| @@ -229,7 +242,7 @@ def main(argv=None): | |||
| 229 | 242 | ||
| 230 | # Commit data | 243 | # Commit data |
| 231 | commit = git_commit_data(data_repo, args.data_dir, branch_name, | 244 | commit = git_commit_data(data_repo, args.data_dir, branch_name, |
| 232 | commit_msg, args.exclude) | 245 | commit_msg, args.exclude, args.notes) |
| 233 | 246 | ||
| 234 | # Create tag | 247 | # Create tag |
| 235 | if tag_name: | 248 | if tag_name: |
| @@ -242,7 +255,9 @@ def main(argv=None): | |||
| 242 | # If no remote is given we push with the default settings from | 255 | # If no remote is given we push with the default settings from |
| 243 | # gitconfig | 256 | # gitconfig |
| 244 | if args.push is not True: | 257 | if args.push is not True: |
| 245 | cmd.extend([args.push, branch_name]) | 258 | notes_refs = ['refs/notes/' + ref.format(branch_name=branch_name) |
| 259 | for ref, _ in args.notes] | ||
| 260 | cmd.extend([args.push, branch_name] + notes_refs) | ||
| 246 | log.info("Pushing data to remote") | 261 | log.info("Pushing data to remote") |
| 247 | data_repo.run_cmd(cmd) | 262 | data_repo.run_cmd(cmd) |
| 248 | 263 | ||
