Hello all, I'm a third year student at the University of Tokyo and, in our "Diving into open-source software" class, my friends and I decided to work with git. Our final, hopefully, is contributing to git. One improvement that we thought of was not letting users to amend commit when the commit is already pushed to the remote server. --- a/builtin/commit.c +++ b/builtin/commit.c @@ -32,6 +32,7 @@ #include "sequencer.h" #include "notes-utils.h" #include "mailmap.h" +#include "remote.h" static const char * const builtin_commit_usage[] = { N_("git commit [<options>] [--] <pathspec>..."), @@ -1125,6 +1126,9 @@ static int parse_and_validate_options(int argc, const char *argv[], struct wt_status *s) { int f = 0; + int ours, theirs; + const char *full_base; + struct branch *branch = branch_get(NULL); argc = parse_options(argc, argv, prefix, options, usage, 0); finalize_deferred_config(s); @@ -1149,6 +1153,12 @@ static int parse_and_validate_options(int argc, const char *argv[], else if (whence == FROM_CHERRY_PICK) die(_("You are in the middle of a cherry-pick -- cannot amend.")); } + + stat_tracking_info(branch, &ours, &theirs, &full_base); + if (amend && ours == 0) { + die(_("This commit is already pushed to the remote -- cannot amend.")); + } + if (fixup_message && squash_message) die(_("Options --squash and --fixup cannot be used together")); if (use_message) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html