1. 09 7月, 2016 1 次提交
  2. 10 5月, 2016 1 次提交
  3. 18 2月, 2016 1 次提交
    • J
      am -i: fix "v"iew · 708b8cc9
      Junio C Hamano 提交于
      The 'v'iew subcommand of the interactive mode of "git am -i" was
      broken by the rewrite to C we did at around 2.6.0 timeframe at
      7ff26832 (builtin-am: implement -i/--interactive, 2015-08-04); we
      used to spawn the pager via the shell, accepting things like
      
      	PAGER='less -S'
      
      in the environment, but the rewrite forgot and tried to directly
      spawn a command whose name is the entire string.
      
      The previous refactoring of the new helper function makes it easier
      for us to do the right thing.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      708b8cc9
  4. 22 1月, 2016 1 次提交
  5. 16 1月, 2016 2 次提交
    • J
      strbuf: give strbuf_getline() to the "most text friendly" variant · 1a0c8dfd
      Junio C Hamano 提交于
      Now there is no direct caller to strbuf_getline(), we can demote it
      to file-scope static that is private to strbuf.c and rename it to
      strbuf_getdelim().  Rename strbuf_getline_crlf(), which is designed
      to be the most "text friendly" variant, and allow it to take over
      this simplest name, strbuf_getline(), so we can add more uses of it
      without having to type _crlf over and over again in the coming
      steps.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      1a0c8dfd
    • J
      strbuf: introduce strbuf_getline_{lf,nul}() · 8f309aeb
      Junio C Hamano 提交于
      The strbuf_getline() interface allows a byte other than LF or NUL as
      the line terminator, but this is only because I wrote these
      codepaths anticipating that there might be a value other than NUL
      and LF that could be useful when I introduced line_termination long
      time ago.  No useful caller that uses other value has emerged.
      
      By now, it is clear that the interface is overly broad without a
      good reason.  Many codepaths have hardcoded preference to read
      either LF terminated or NUL terminated records from their input, and
      then call strbuf_getline() with LF or NUL as the third parameter.
      
      This step introduces two thin wrappers around strbuf_getline(),
      namely, strbuf_getline_lf() and strbuf_getline_nul(), and
      mechanically rewrites these call sites to call either one of
      them.  The changes contained in this patch are:
      
       * introduction of these two functions in strbuf.[ch]
      
       * mechanical conversion of all callers to strbuf_getline() with
         either '\n' or '\0' as the third parameter to instead call the
         respective thin wrapper.
      
      After this step, output from "git grep 'strbuf_getline('" would
      become a lot smaller.  An interim goal of this series is to make
      this an empty set, so that we can have strbuf_getline_crlf() take
      over the shorter name strbuf_getline().
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8f309aeb
  6. 15 1月, 2016 1 次提交
    • J
      strbuf: make strbuf_getline_crlf() global · c8aa9fdf
      Junio C Hamano 提交于
      Often we read "text" files that are supplied by the end user
      (e.g. commit log message that was edited with $GIT_EDITOR upon 'git
      commit -e'), and in some environments lines in a text file are
      terminated with CRLF.  Existing strbuf_getline() knows to read a
      single line and then strip the terminating byte from the result, but
      it is handy to have a version that is more tailored for a "text"
      input that takes both '\n' and '\r\n' as line terminator (aka
      <newline> in POSIX lingo) and returns the body of the line after
      stripping <newline>.
      
      Recently reimplemented "git am" uses such a function implemented
      privately; move it to strbuf.[ch] and make it available for others.
      
      Note that we do not blindly replace calls to strbuf_getline() that
      uses LF as the line terminator with calls to strbuf_getline_crlf()
      and this is very much deliberate.  Some callers may want to treat an
      incoming line that ends with CR (and terminated with LF) to have a
      payload that includes the final CR, and such a blind replacement
      will result in misconversion when done without code audit.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c8aa9fdf
  7. 14 1月, 2016 1 次提交
  8. 20 11月, 2015 1 次提交
  9. 22 10月, 2015 1 次提交
    • J
      am: make direct call to mailinfo · 4b98bae2
      Junio C Hamano 提交于
      And finally the endgame.  Instead of spawning "git mailinfo" via the
      run_command() API the same number of times as there are incoming
      patches, make direct internal call to the libified mailinfo() from
      "git am" to reduce the spawning overhead, which would matter on some
      platforms.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4b98bae2
  10. 17 10月, 2015 2 次提交
  11. 10 10月, 2015 1 次提交
    • J
      am -3: do not let failed merge from completing the error codepath · c63d4b2f
      Junio C Hamano 提交于
      When "am" was rewritten in C, the codepath for falling back to
      three-way merge was mistakenly made to make an internal call to
      merge-recursive, disabling the error reporting code for certain
      types of errors merge-recursive detects and reports by calling
      die().
      
      This is a quick-fix for correctness.  The ideal endgame would be to
      replace run_command() in run_fallback_merge_recursive() with a
      direct call after making sure that internal call to merge-recursive
      does not die().
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c63d4b2f
  12. 01 10月, 2015 1 次提交
  13. 07 9月, 2015 1 次提交
    • J
      am: match --signoff to the original scripted version · aab84542
      Junio C Hamano 提交于
      Linus noticed that the recently reimplemented "git am -s" defines
      the trailer block too rigidly, resulting in an unnecessary blank
      line between the existing sign-offs and his new sign-off.  An e-mail
      submission sent to Linus in real life ends with mixture of sign-offs
      and commentaries, e.g.
      
      	title here
      
      	message here
      Signed-off-by: NOriginal Author <original@auth.or>
      	[rv: tweaked frotz and nitfol]
      Signed-off-by: NRe Viewer <rv@ew.er>
      Signed-off-by: NOther Reviewer <other@rev.ewer>
      	---
      	patch here
      
      Because the reimplementation reused append_signoff() helper that is
      used by other codepaths, which is unaware that people intermix such
      comments with their sign-offs in the trailer block, such a message
      was judged to end with a non-trailer, resulting in an extra blank
      line before adding a new sign-off.
      
      The original scripted version of "git am" used a lot looser
      definition, i.e. "if and only if there is no line that begins with
      Signed-off-by:, add a blank line before adding a new sign-off".  For
      the upcoming release, stop using the append_signoff() in "git am"
      and reimplement the looser definition used by the scripted version
      to use only in "git am" to fix this regression in "am" while
      avoiding new regressions to other users of append_signoff().
      
      In the longer term, we should look into loosening append_signoff()
      so that other codepaths that add a new sign-off behave the same way
      as "git am -s", but that is a task for post-release.
      Reported-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      aab84542
  14. 02 9月, 2015 1 次提交
    • J
      rerere: release lockfile in non-writing functions · 9dd330e6
      Jeff King 提交于
      There's a bug in builtin/am.c in which we take a lock on
      MERGE_RR recursively. But rather than fix am.c, this patch
      fixes the confusing interface from rerere.c that caused the
      bug. Read on for the gory details.
      
      The setup_rerere() function both reads the existing MERGE_RR
      file, and takes MERGE_RR.lock. In the rerere() and
      rerere_forget() functions, we end up in write_rr(), which
      will then commit the lock file.
      
      But for functions like rerere_clear() that do not write to
      MERGE_RR, we expect the caller to have handled
      setup_rerere(). That caller would then need to release the
      lockfile, but it can't; the lock struct is local to
      rerere.c.
      
      For builtin/rerere.c, this is OK. We run a single rerere
      operation and then exit immediately, which has the side
      effect of rolling back the lockfile.
      
      But in builtin/am.c, this is actively wrong. If we run "git
      am -3 --skip", we call setup-rerere twice without releasing
      the lock:
      
        1. The "--skip" causes us to call am_rerere_clear(), which
           calls setup_rerere(), but never drops the lock.
      
        2. We then proceed to the next patch.
      
        3. The "--3way" may cause us to call rerere() to handle
           conflicts in that patch, but we are already holding the
           lock. The lockfile code dies with:
      
           BUG: prepare_tempfile_object called for active object
      
      We could fix this by having rerere_clear() call
      rollback_lock_file(). But it feels a bit odd for it to roll
      back a lockfile that it did not itself take. So let's
      simplify the interface further, and handle setup_rerere in
      the function itself, taking away the question from the
      caller over whether they need to do so.
      
      We can give rerere_gc() the same treatment, as well (even
      though it doesn't have any callers besides builtin/rerere.c
      at this point). Note that these functions don't take flags
      from their callers to pass along to setup_rerere; that's OK,
      because the flags would not be meaningful for what they are
      doing.
      
      Both of those functions need to hold the lock because even
      though they do not write to MERGE_RR, they are still writing
      and should be protected from a simultaneous "rerere" run.
      But rerere_remaining(), "rerere diff", and "rerere status"
      are all read-only operations. They want to setup_rerere(),
      but do not care about taking the lock in the first place.
      Since our update of MERGE_RR is the usual atomic rename done
      by commit_lock_file, they can just do a lockless read. For
      that, we teach setup_rerere a READONLY flag to avoid the
      lock.
      
      As a bonus, this pushes builtin/rerere.c's setup_rerere call
      closer to the functions that use it. Which means that "git
      rerere totally-bogus-command" will no longer silently
      exit(0) in a repository without rerere enabled.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9dd330e6
  15. 27 8月, 2015 1 次提交
  16. 26 8月, 2015 1 次提交
    • J
      write_file_v(): do not leave incomplete line at the end · e7ffa38c
      Junio C Hamano 提交于
      All existing callers to this function use it to produce a text file
      or an empty file, and a new callsite that mimick them must end their
      payload with a LF.  If they forget to do so, the resulting file will
      end with an incomplete line.
      
      Teach write_file_v() to complete the incomplete line, if exists, so
      that the callers do not have to.
      
      With this, the caller-side fix in builtin/am.c becomes unnecessary.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      e7ffa38c
  17. 25 8月, 2015 3 次提交
    • J
      write_file(): drop "fatal" parameter · 12d6ce1d
      Junio C Hamano 提交于
      All callers except three passed 1 for the "fatal" parameter to ask
      this function to die upon error, but to a casual reader of the code,
      it was not all obvious what that 1 meant.  Instead, split the
      function into two based on a common write_file_v() that takes the
      flag, introduce write_file_gently() as a new way to attempt creating
      a file without dying on error, and make three callers to call it.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      12d6ce1d
    • J
      builtin/am: make sure state files are text · 57c867ef
      Junio C Hamano 提交于
      We forgot to terminate the payload given to write_file() with LF,
      resulting in files that end with an incomplete line.  Teach the
      wrappers builtin/am uses to make sure it adds LF at the end as
      necessary.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      57c867ef
    • J
      builtin/am: introduce write_state_*() helper functions · 25b763ba
      Junio C Hamano 提交于
      There are many calls to write_file() that repeat the same pattern in
      the implementation of the builtin version of "am".  They all share
      the same traits, i.e they
      
       - produce a text file with a single string in it;
      
       - have enough information to produce the entire contents of that
         file;
      
       - generate the pathname of the file by making a call to am_path(); and
      
       - they ask write_file() to die() upon failure.
      
      The slight differences among the call sites throw them into roughly
      three categories:
      
       - many write either "t" or "f" based on a boolean value to a file;
      
       - some write the integer value in decimal text;
      
       - some others write more general string, e.g. an object name in
         hex, an empty string (i.e. the presense of the file itself serves
         as a flag), etc.
      
      Introduce three helpers, write_state_bool(), write_state_count() and
      write_state_text(), to reduce direct calls to write_file().
      
      This is a preparatory step for the next step to ensure that no
      "state" file this command leaves in $GIT_DIR is with an incomplete
      line at the end.
      Suggested-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      25b763ba
  18. 20 8月, 2015 1 次提交
  19. 13 8月, 2015 2 次提交
    • P
      am: let --signoff override --no-signoff · b5e82359
      Paul Tan 提交于
      After resolving a conflicting patch, a user may wish to sign off the
      patch to declare that the patch has been modified. As such, the user
      will expect that running "git am --signoff --continue" will append the
      signoff to the commit message.
      
      However, the --signoff option is only taken into account during the
      mail-parsing stage. If the --signoff option is set, then the signoff
      will be appended to the commit message. Since the mail-parsing stage
      comes before the patch application stage, the --signoff option, if
      provided on the command-line when resuming, will have no effect at all.
      
      We cannot move the append_signoff() call to the patch application stage
      as the applypatch-msg hook and interactive mode, which run before patch
      application, may expect the signoff to be there.
      
      Fix this by taking note if the user explictly set the --signoff option
      on the command-line, and append the signoff to the commit message when
      resuming if so.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b5e82359
    • P
      am: let command-line options override saved options · 852a1710
      Paul Tan 提交于
      When resuming, git-am mistakenly ignores command-line options.
      
      For instance, when a patch fails to apply with "git am patch",
      subsequently running "git am --3way" would not cause git-am to fall
      back on attempting a threeway merge.  This occurs because by default
      the --3way option is saved as "false", and the saved am options are
      loaded after the command-line options are parsed, thus overwriting
      the command-line options when resuming.
      
      Fix this by moving the am_load() function call before parse_options(),
      so that command-line options will override the saved am options.
      
      The purpose of supporting this use case is to enable users to "wiggle"
      that one conflicting patch. As such, it is expected that the
      command-line options do not affect subsequent applied patches. Implement
      this by calling am_load() once we apply the conflicting patch
      successfully.
      Noticed-by: NJunio C Hamano <gitster@pobox.com>
      Helped-by: NJunio C Hamano <gitster@pobox.com>
      Helped-by: NJeff King <peff@peff.net>
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      852a1710
  20. 05 8月, 2015 16 次提交
    • R
      git-am: add am.threeWay config variable · e97a5e76
      Remi Lespinet 提交于
      Add the am.threeWay configuration variable to use the -3 or --3way
      option of git am by default. When am.threeway is set and not desired
      for a specific git am command, the --no-3way option can be used to
      override it.
      Signed-off-by: NRemi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      e97a5e76
    • P
      builtin-am: remove redirection to git-am.sh · 783d7e86
      Paul Tan 提交于
      At the beginning of the rewrite of git-am.sh to C, in order to not break
      existing test scripts that depended on a functional git-am, a
      redirection to git-am.sh was introduced that would activate if the
      environment variable _GIT_USE_BUILTIN_AM was not defined.
      
      Now that all of git-am.sh's functionality has been re-implemented in
      builtin/am.c, remove this redirection, and retire git-am.sh into
      contrib/examples/.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      783d7e86
    • P
      builtin-am: check for valid committer ident · 5e4f9cff
      Paul Tan 提交于
      When commit_tree() is called, if the user does not have an explicit
      committer ident configured, it will attempt to construct a default
      committer ident based on the user's and system's info (e.g. gecos field,
      hostname etc.) However, if a default committer ident is unable to be
      constructed, commit_tree() will die(), but at this point of git-am's
      execution, there will already be changes made to the index and work
      tree.
      
      This can be confusing to new users, and as such since d64e6b04 (Keep
      Porcelainish from failing by broken ident after making changes.,
      2006-02-18) git-am.sh will check to see if the committer ident has been
      configured, or a default one can be constructed, before even starting to
      apply patches.
      
      Re-implement this in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5e4f9cff
    • P
      builtin-am: implement legacy -b/--binary option · c2676cde
      Paul Tan 提交于
      The -b/--binary option was initially implemented in 087b6742 (git-am:
      --binary; document --resume and --binary., 2005-11-16). The option will
      pass the --binary flag to git-apply to allow it to apply binary patches.
      
      However, in 2b6eef94 (Make apply --binary a no-op., 2006-09-06), --binary
      was been made a no-op in git-apply. Following that, since cb3a160d
      (git-am: ignore --binary option, 2008-08-09), the --binary option in
      git-am is ignored as well.
      
      In 6c15a1c6 (am: officially deprecate -b/--binary option, 2012-03-13),
      the --binary option was tweaked to its present behavior: when set, the
      message:
      
      	The -b/--binary option has been a no-op for long time, and it
      	will be removed. Please do not use it anymore.
      
      will be printed.
      
      Re-implement this in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c2676cde
    • P
      builtin-am: implement -i/--interactive · 7ff26832
      Paul Tan 提交于
      Since d1c5f2a4 (Add git-am, applymbox replacement., 2005-10-07),
      git-am.sh supported the --interactive mode. After parsing the patch mail
      and extracting the patch, commit message and authorship info, an
      interactive session will begin that allows the user to choose between:
      
      * applying the patch
      
      * applying the patch and all subsequent patches (by disabling
        interactive mode in subsequent patches)
      
      * skipping the patch
      
      * editing the commit message
      
      Since f89ad67f (Add [v]iew patch in git-am interactive., 2005-10-25),
      git-am.sh --interactive also supported viewing the patch to be applied.
      
      When --resolved-ing in --interactive mode, we need to take care to
      update the patch with the contents of the index, such that the correct
      patch will be displayed when the patch is viewed in interactive mode.
      
      Re-implement the above in builtin/am.c
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      7ff26832
    • P
      builtin-am: support and auto-detect mercurial patches · 94cd175c
      Paul Tan 提交于
      Since 0cfd1120 (am: preliminary support for hg patches, 2011-08-29),
      git-am.sh could convert mercurial patches to an RFC2822 mail patch
      suitable for parsing with git-mailinfo, and queue them in the state
      directory for application.
      
      Since 15ced753 (git-am foreign patch support: autodetect some patch
      formats, 2009-05-27), git-am.sh was able to auto-detect mercurial
      patches by checking if the file begins with the line:
      
      	# HG changeset patch
      
      Re-implement the above in builtin/am.c.
      Helped-by: NStefan Beller <sbeller@google.com>
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      94cd175c
    • P
      builtin-am: support and auto-detect StGit series files · 336108c1
      Paul Tan 提交于
      Since c574e683 (git-am foreign patch support: StGIT support, 2009-05-27),
      git-am.sh is able to read a single StGit series file and, for each StGit
      patch listed in the file, convert the StGit patch into a RFC2822 mail
      patch suitable for parsing with git-mailinfo, and queue them in the
      state directory for applying.
      
      Since 15ced753 (git-am foreign patch support: autodetect some patch
      formats, 2009-05-27), git-am.sh is able to auto-detect StGit series
      files by checking to see if the file starts with the string:
      
      	# This series applies on GIT commit
      
      Re-implement the above in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      336108c1
    • P
      builtin-am: support and auto-detect StGit patches · 5ae41c79
      Paul Tan 提交于
      Since c574e683 (git-am foreign patch support: StGIT support, 2009-05-27),
      git-am.sh supported converting StGit patches into RFC2822 mail patches
      that can be parsed with git-mailinfo.
      
      Implement this by introducing two functions in builtin/am.c:
      stgit_patch_to_mail() and split_mail_conv().
      
      stgit_patch_to_mail() is a callback function for split_mail_conv(), and
      contains the logic for converting an StGit patch into an RFC2822 mail
      patch.
      
      split_mail_conv() implements the logic to go through each file in the
      `paths` list, reading from stdin where specified, and calls the callback
      function to write the converted patch to the corresponding output file
      in the state directory. This interface should be generic enough to
      support other foreign patch formats in the future.
      
      Since 15ced753 (git-am foreign patch support: autodetect some patch
      formats, 2009-05-27), git-am.sh is able to auto-detect StGit patches.
      Re-implement this in builtin/am.c.
      Helped-by: NEric Sunshine <sunshine@sunshineco.com>
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5ae41c79
    • P
      builtin-am: rerere support · f1cb96d6
      Paul Tan 提交于
      git-am.sh will call git-rerere at the following events:
      
      * "git rerere" when a three-way merge fails to record the conflicted
        automerge results. Since 8389b52b (git-rerere: reuse recorded resolve.,
        2006-01-28)
      
        * Since cb6020bb (Teach --[no-]rerere-autoupdate option to merge,
          revert and friends, 2009-12-04), git-am.sh supports the
          --[no-]rerere-autoupdate option as well, and would pass it to
          git-rerere.
      
      * "git rerere" when --resolved, to record the hand resolution. Since
        f131dd49 (rerere: record (or avoid misrecording) resolved, skipped or
        aborted rebase/am, 2006-12-08)
      
      * "git rerere clear" when --skip-ing. Since f131dd49 (rerere: record (or
        avoid misrecording) resolved, skipped or aborted rebase/am,
        2006-12-08)
      
      * "git rerere clear" when --abort-ing. Since 3e5057a8 (git am --abort,
        2008-07-16)
      
      Re-implement the above in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f1cb96d6
    • P
      builtin-am: invoke post-applypatch hook · 7088f807
      Paul Tan 提交于
      Since d1c5f2a4 (Add git-am, applymbox replacement., 2005-10-07),
      git-am.sh will invoke the post-applypatch hook after the patch is
      applied and a commit is made. The exit code of the hook is ignored.
      
      Re-implement this in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      7088f807
    • P
      builtin-am: invoke pre-applypatch hook · 6c24c5c0
      Paul Tan 提交于
      Since d1c5f2a4 (Add git-am, applymbox replacement., 2005-10-07),
      git-am.sg will invoke the pre-applypatch hook after applying the patch
      to the index, but before a commit is made. Should the hook exit with a
      non-zero status, git am will exit.
      
      Re-implement this in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6c24c5c0
    • P
      builtin-am: invoke applypatch-msg hook · b8803d8f
      Paul Tan 提交于
      Since d1c5f2a4 (Add git-am, applymbox replacement., 2005-10-07),
      git-am.sh will invoke the applypatch-msg hooks just after extracting the
      patch message. If the applypatch-msg hook exits with a non-zero status,
      git-am.sh abort before even applying the patch to the index.
      
      Re-implement this in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b8803d8f
    • P
      builtin-am: support automatic notes copying · 88b291fe
      Paul Tan 提交于
      Since eb2151bb (rebase: support automatic notes copying, 2010-03-12),
      git-am.sh supported automatic notes copying in --rebasing mode by
      invoking "git notes copy" once it has finished applying all the patches.
      
      Re-implement this feature in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      88b291fe
    • P
      builtin-am: invoke post-rewrite hook · 13b97ea5
      Paul Tan 提交于
      Since 96e19488 (rebase: invoke post-rewrite hook, 2010-03-12), git-am.sh
      will invoke the post-rewrite hook after it successfully finishes
      applying all the queued patches.
      
      To do this, when parsing a mail to extract its patch and metadata, in
      --rebasing mode git-am.sh will also store the original commit ID in the
      $state_dir/original-commit file. Once it applies and commits the patch,
      the original commit ID, and the new commit ID, will be appended to the
      $state_dir/rewritten file.
      
      Once all of the queued mail have been processed, git-am.sh will then
      invoke the post-rewrite hook with the contents of the
      $state_dir/rewritten file.
      
      Re-implement this in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      13b97ea5
    • P
      builtin-am: implement -S/--gpg-sign, commit.gpgsign · 7e35dacb
      Paul Tan 提交于
      Since 3b4e395f (am: add the --gpg-sign option, 2014-02-01), git-am.sh
      supported the --gpg-sign option, and would pass it to git-commit-tree,
      thus GPG-signing the commit object.
      
      Re-implement this option in builtin/am.c.
      
      git-commit-tree would also sign the commit by default if the
      commit.gpgsign setting is true. Since we do not run commit-tree, we
      re-implement this behavior by handling the commit.gpgsign setting
      ourselves.
      Helped-by: NStefan Beller <sbeller@google.com>
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      7e35dacb
    • P
      builtin-am: implement --committer-date-is-author-date · 0cd4bcba
      Paul Tan 提交于
      Since 3f01ad66 (am: Add --committer-date-is-author-date option,
      2009-01-22), git-am.sh implemented the --committer-date-is-author-date
      option, which tells git-am to use the timestamp recorded in the email
      message as both author and committer date.
      
      Re-implement this option in builtin/am.c.
      Signed-off-by: NPaul Tan <pyokagan@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0cd4bcba