commit 8acf3aa649625d9afcec49b78392fcfb76063bf8 from: "Sven M. Hallberg" via: Thomas Adam date: Sat Jun 21 09:24:15 2025 UTC cvg: add author_time argument to got_worktree_cvg_commit() No functional change, but keeps the code in sync with got. Patch by Sven M. Hallberg commit - e16f7949b860f4a94e2f18128f786ffafc64b0ee commit + 8acf3aa649625d9afcec49b78392fcfb76063bf8 blob - e7efb2f42607b5d2d795aaea607648b2b504eba0 blob + 9364040ebe5ddbf124e60b56e4ad49d6bc7379fd --- cvg/cvg.c +++ cvg/cvg.c @@ -7934,8 +7934,11 @@ cmd_commit(int argc, char *argv[]) if (error) goto done; - if (author == NULL) + if (author == NULL) { + /* got_worktree_cvg_commit() treats committer as optional */ author = committer; + committer = NULL; /* => author timestamp is ignored */ + } remote_name = GOT_SEND_DEFAULT_REMOTE_NAME; worktree_conf = got_worktree_get_gotconfig(worktree); @@ -8048,10 +8051,10 @@ cmd_commit(int argc, char *argv[]) cl_arg.repo_path = got_repo_get_path(repo); cl_arg.dial_proto = proto; error = got_worktree_cvg_commit(&id, worktree, &paths, author, - committer, allow_bad_symlinks, show_diff, commit_conflicts, - collect_commit_logmsg, &cl_arg, print_status, NULL, proto, host, - port, server_path, jumphost, identity_file, verbosity, remote, - check_cancelled, repo); + time(NULL), committer, allow_bad_symlinks, show_diff, + commit_conflicts, collect_commit_logmsg, &cl_arg, print_status, + NULL, proto, host, port, server_path, jumphost, identity_file, + verbosity, remote, check_cancelled, repo); if (error) { if (error->code != GOT_ERR_COMMIT_MSG_EMPTY && cl_arg.logmsg_path != NULL) blob - 057137a8ccbd155e4eebbe781aa2acbab0177706 blob + 53abcb2f9c7ae9bf78e62ccf590a8abdb75eedc5 --- include/got_worktree_cvg.h +++ include/got_worktree_cvg.h @@ -23,12 +23,14 @@ * current base commit. * An author and a non-empty log message must be specified. * The name of the committer is optional (may be NULL). + * If a committer is given, a separate author timestamp can be specified + * which is ignored otherwise. * If a path to be committed contains a symlink which points outside * of the path space under version control, raise an error unless * committing of such paths is being forced by the caller. */ const struct got_error *got_worktree_cvg_commit(struct got_object_id **, - struct got_worktree *, struct got_pathlist_head *, const char *, + struct got_worktree *, struct got_pathlist_head *, const char *, time_t, const char *, int, int, int, got_worktree_commit_msg_cb, void *, got_worktree_status_cb, void *, const char *, const char *, const char *, const char *, const char *, const char *, int, blob - 7d213eff608b21b69d395c54e98607d6a422821c blob + 3e2e47ed53111c0f880a2561b854f807e6d12c8e --- lib/worktree_cvg.c +++ lib/worktree_cvg.c @@ -2226,8 +2226,8 @@ commit_worktree(struct got_object_id **new_commit_id, struct got_object_id *head_commit_id, struct got_object_id *parent_id2, struct got_worktree *worktree, - const char *author, const char *committer, char *diff_path, - got_worktree_commit_msg_cb commit_msg_cb, void *commit_arg, + const char *author, time_t author_time, const char *committer, + char *diff_path, got_worktree_commit_msg_cb commit_msg_cb, void *commit_arg, got_worktree_status_cb status_cb, void *status_arg, struct got_repository *repo) { @@ -2312,8 +2312,10 @@ commit_worktree(struct got_object_id **new_commit_id, nparents++; } timestamp = time(NULL); + if (committer == NULL) + author_time = timestamp; err = got_object_commit_create(new_commit_id, new_tree_id, &parent_ids, - nparents, author, timestamp, committer, timestamp, logmsg, repo); + nparents, author, author_time, committer, timestamp, logmsg, repo); if (logmsg != NULL) free(logmsg); if (err) @@ -2902,8 +2904,8 @@ done: const struct got_error * got_worktree_cvg_commit(struct got_object_id **new_commit_id, struct got_worktree *worktree, struct got_pathlist_head *paths, - const char *author, const char *committer, int allow_bad_symlinks, - int show_diff, int commit_conflicts, + const char *author, time_t author_time, const char *committer, + int allow_bad_symlinks, int show_diff, int commit_conflicts, got_worktree_commit_msg_cb commit_msg_cb, void *commit_arg, got_worktree_status_cb status_cb, void *status_arg, const char *proto, const char *host, const char *port, @@ -3044,7 +3046,7 @@ got_worktree_cvg_commit(struct got_object_id **new_com } err = commit_worktree(new_commit_id, &commitable_paths, - head_commit_id, NULL, worktree, author, committer, + head_commit_id, NULL, worktree, author, author_time, committer, (diff_path && cc_arg.diff_header_shown) ? diff_path : NULL, commit_msg_cb, commit_arg, status_cb, status_arg, repo); if (err)