commitTree method

Future<String> commitTree(
  1. String treeSha,
  2. String commitMessage, {
  3. List<String>? parentCommitShas,
})

Returns the SHA1 for the new commit.

See git-commit-tree

Implementation

Future<String> commitTree(
  String treeSha,
  String commitMessage, {
  List<String>? parentCommitShas,
}) async {
  requireArgumentValidSha1(treeSha, 'treeSha');

  requireArgumentNotNullOrEmpty(commitMessage, 'commitMessage');
  requireArgument(
    commitMessage.trim() == commitMessage,
    'commitMessage',
    'Value cannot start or end with whitespace.',
  );

  parentCommitShas ??= [];

  final args = ['commit-tree', treeSha, '-m', commitMessage];

  for (final parentSha in parentCommitShas) {
    requireArgumentValidSha1(parentSha, 'parentCommitShas');
    args.addAll(['-p', parentSha]);
  }

  final pr = await runCommand(args);
  final sha = (pr.stdout as String).trim();
  assert(isValidSha(sha));
  return sha;
}