def run(user_selection, options = Hash.new)
tag_name = options[:tag]
ws.load_config
pkg = ws.manifest.main_package_set.create_autobuild_package
importer = pkg.importer
if !importer || !importer.kind_of?(Autobuild::Git)
raise CLIInvalidArguments, "cannot use autoproj commit if the main configuration is not managed by git"
end
if tag_name
begin
importer.rev_parse(pkg, "refs/tags/#{tag_name}")
raise CLIInvalidArguments, "tag #{tag_name} already exists"
rescue Autobuild::PackageException
end
end
versions_file = File.join(ws.config_dir,
Workspace::OVERRIDES_DIR,
Versions::DEFAULT_VERSIONS_FILE_BASENAME)
versions = CLI::Versions.new(ws)
Autoproj.message "creating versions file, this may take a while"
versions.run(user_selection,
save: versions_file,
package_sets: options[:package_sets],
replace: true,
keep_going: options[:keep_going],
deps: options[:deps])
importer.run_git(pkg, "add", versions_file)
message = options[:message] || default_message(tag_name)
importer.run_git(pkg, "commit", "-m", message)
importer.run_git(pkg, "tag", tag_name) unless tag_name.nil?
end