Re: [PATCH v3 16/19] sequencer: implement save_autostash()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Denton

On 21/03/2020 09:21, Denton Liu wrote:
Extract common functionality of apply_autostash() into
apply_save_autostash() and use it to implement save_autostash(). This
function will be used in a future commit.

Signed-off-by: Denton Liu <liu.denton@xxxxxxxxx>
---
  sequencer.c | 37 +++++++++++++++++++++++++++----------
  sequencer.h |  1 +
  2 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/sequencer.c b/sequencer.c
index 81b6c700d1..d67d47b332 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -3705,7 +3705,7 @@ void create_autostash(struct repository *r, const char *path,
  	strbuf_release(&buf);
  }
-int apply_autostash(const char *path)
+static int apply_save_autostash(const char *path, int attempt_apply)
  {
  	struct strbuf stash_sha1 = STRBUF_INIT;
  	struct child_process child = CHILD_PROCESS_INIT;
@@ -3718,13 +3718,17 @@ int apply_autostash(const char *path)
  	}
  	strbuf_trim(&stash_sha1);
- child.git_cmd = 1;
-	child.no_stdout = 1;
-	child.no_stderr = 1;
-	argv_array_push(&child.args, "stash");
-	argv_array_push(&child.args, "apply");
-	argv_array_push(&child.args, stash_sha1.buf);
-	if (!run_command(&child))
+	if (attempt_apply) {
+		child.git_cmd = 1;
+		child.no_stdout = 1;
+		child.no_stderr = 1;
+		argv_array_push(&child.args, "stash");
+		argv_array_push(&child.args, "apply");
+		argv_array_push(&child.args, stash_sha1.buf);
+		ret = run_command(&child);
+	}
+
+	if (attempt_apply && !ret)

If attempt_only is not set then we wont get any message - is this intended? Previously we always showed the message when applying was successful

  		fprintf(stderr, _("Applied autostash.\n"));
  	else {
  		struct child_process store = CHILD_PROCESS_INIT;
@@ -3740,10 +3744,13 @@ int apply_autostash(const char *path)
  			ret = error(_("cannot store %s"), stash_sha1.buf);
  		else
  			fprintf(stderr,
-				_("Applying autostash resulted in conflicts.\n"
+				_("%s\n"
  				  "Your changes are safe in the stash.\n"
  				  "You can run \"git stash pop\" or"
-				  " \"git stash drop\" at any time.\n"));
+				  " \"git stash drop\" at any time.\n"),
+				attempt_apply ?
+				_("Applying autostash resulted in conflicts.") :
+				_("Autostash exists; creating a new stash entry."));

I'm a bit confused by the new message, perhaps the commit message could explain what attempt_only is used for and then I suspect the reason for this change will become clear

Best Wishes

Phillip

  	}
unlink(path);
@@ -3751,6 +3758,16 @@ int apply_autostash(const char *path)
  	return ret;
  }
+int save_autostash(const char *path)
+{
+	return apply_save_autostash(path, 0);
+}
+
+int apply_autostash(const char *path)
+{
+	return apply_save_autostash(path, 1);
+}
+
  static const char *reflog_message(struct replay_opts *opts,
  	const char *sub_action, const char *fmt, ...)
  {
diff --git a/sequencer.h b/sequencer.h
index 44ecfee7f3..1cb0e4e4b7 100644
--- a/sequencer.h
+++ b/sequencer.h
@@ -193,6 +193,7 @@ void commit_post_rewrite(struct repository *r,
void create_autostash(struct repository *r, const char *path,
  		      const char *default_reflog_action);
+int save_autostash(const char *path);
  int apply_autostash(const char *path);
#define SUMMARY_INITIAL_COMMIT (1 << 0)




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux