threads / patch / 36908

patch, 2 partsreceive-pack.c: add missing xstrdup

Subject: [PATCH 2/2] receive-pack.c: add missing xstrdup

## tl;dr

5 messages between Jun 13, 2014 and Jun 13, 2014. Diffs are folded; open one to read it.

replies: 4people: 2as markdown or json

Ronnie Sahlberg· Jun 13, 2014, 15:51 UTC · lore

[PATCH 0/2] Fixes for the ref-transactions series in origin/pu

Jun, Please find two fixes for the ref-transactions series in origin/pu

Ronnie Sahlberg (2):
  remotes.c: update calls to new signature for repack_without_refs
  receive-pack.c: add missing xstrdup
 builtin/receive-pack.c | 21 +++++++++++----------
 builtin/remote.c       |  5 +++--
 refs.h                 |  3 ++-
 3 files changed, 16 insertions(+), 13 deletions(-)
-- 
2.0.0.415.g8cd8cf8
Ronnie Sahlberg· Jun 13, 2014, 15:51 UTC · re: Ronnie Sahlberg · lore

[PATCH 1/2] remotes.c: update calls to new signature for repack_without_refs

This should be merged into patch: 00c74db refs.c: add an err argument to repack_without_refs

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
---
 builtin/remote.c | 5 +++--
 refs.h           | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)
Show changes to 2 files +5 −3

builtin/remote.c, refs.h

diff --git a/builtin/remote.c b/builtin/remote.c
index c9102e8..401feb3 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -755,7 +755,7 @@ static int remove_branches(struct string_list *branches)
 	branch_names = xmalloc(branches->nr * sizeof(*branch_names));
 	for (i = 0; i < branches->nr; i++)
 		branch_names[i] = branches->items[i].string;
-	result |= repack_without_refs(branch_names, branches->nr);
+	result |= repack_without_refs(branch_names, branches->nr, NULL);
 	free(branch_names);
 
 	for (i = 0; i < branches->nr; i++) {
@@ -1333,7 +1333,8 @@ static int prune_remote(const char *remote, int dry_run)
 		for (i = 0; i < states.stale.nr; i++)
 			delete_refs[i] = states.stale.items[i].util;
 		if (!dry_run)
-			result |= repack_without_refs(delete_refs, states.stale.nr);
+			result |= repack_without_refs(delete_refs,
+						      states.stale.nr, NULL);
 		free(delete_refs);
 	}
 
diff --git a/refs.h b/refs.h
index 1b236f7..db463d0 100644
--- a/refs.h
+++ b/refs.h
@@ -162,7 +162,8 @@ extern void rollback_packed_refs(void);
  */
 int pack_refs(unsigned int flags);
 
-extern int repack_without_refs(const char **refnames, int n);
+extern int repack_without_refs(const char **refnames, int n,
+			       struct strbuf *err);
 
 extern int ref_exists(const char *);
 
-- 
2.0.0.415.g8cd8cf8
Junio C Hamano· Jun 13, 2014, 19:40 UTC · re: Ronnie Sahlberg · lore

Re: [PATCH 1/2] remotes.c: update calls to new signature for repack_without_refs

Ronnie Sahlberg <sahlberg@google.com> writes:
Show 45 quoted lines
> This should be merged into patch:
> 00c74db refs.c: add an err argument to repack_without_refs
>
> Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
> ---
>  builtin/remote.c | 5 +++--
>  refs.h           | 3 ++-
>  2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/remote.c b/builtin/remote.c
> index c9102e8..401feb3 100644
> --- a/builtin/remote.c
> +++ b/builtin/remote.c
> @@ -755,7 +755,7 @@ static int remove_branches(struct string_list *branches)
>  	branch_names = xmalloc(branches->nr * sizeof(*branch_names));
>  	for (i = 0; i < branches->nr; i++)
>  		branch_names[i] = branches->items[i].string;
> -	result |= repack_without_refs(branch_names, branches->nr);
> +	result |= repack_without_refs(branch_names, branches->nr, NULL);
>  	free(branch_names);
>  
>  	for (i = 0; i < branches->nr; i++) {
> @@ -1333,7 +1333,8 @@ static int prune_remote(const char *remote, int dry_run)
>  		for (i = 0; i < states.stale.nr; i++)
>  			delete_refs[i] = states.stale.items[i].util;
>  		if (!dry_run)
> -			result |= repack_without_refs(delete_refs, states.stale.nr);
> +			result |= repack_without_refs(delete_refs,
> +						      states.stale.nr, NULL);
>  		free(delete_refs);
>  	}
>  
> diff --git a/refs.h b/refs.h
> index 1b236f7..db463d0 100644
> --- a/refs.h
> +++ b/refs.h
> @@ -162,7 +162,8 @@ extern void rollback_packed_refs(void);
>   */
>  int pack_refs(unsigned int flags);
>  
> -extern int repack_without_refs(const char **refnames, int n);
> +extern int repack_without_refs(const char **refnames, int n,
> +			       struct strbuf *err);
>  
>  extern int ref_exists(const char *);

How does this related to v16? The reason I ask is because even though v16 0/48 says it is to be applied on 'next' it won't at least for me X-< and this is one of the early places where the patches fail to apply without adjustment.

Ronnie Sahlberg· Jun 13, 2014, 19:47 UTC · re: Junio C Hamano · lore

Re: [PATCH 1/2] remotes.c: update calls to new signature for repack_without_refs

It should have been in [PATCH v16 08/48] refs.c: add an err argument to repack_without_refs

but it is not. It must have gone AWOL during one of the many conflicts. It should be there nevertheless since we change the signature for this function in this patch.

On Fri, Jun 13, 2014 at 12:40 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 52 quoted lines
> Ronnie Sahlberg <sahlberg@google.com> writes:
>
>> This should be merged into patch:
>> 00c74db refs.c: add an err argument to repack_without_refs
>>
>> Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
>> ---
>>  builtin/remote.c | 5 +++--
>>  refs.h           | 3 ++-
>>  2 files changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/builtin/remote.c b/builtin/remote.c
>> index c9102e8..401feb3 100644
>> --- a/builtin/remote.c
>> +++ b/builtin/remote.c
>> @@ -755,7 +755,7 @@ static int remove_branches(struct string_list *branches)
>>       branch_names = xmalloc(branches->nr * sizeof(*branch_names));
>>       for (i = 0; i < branches->nr; i++)
>>               branch_names[i] = branches->items[i].string;
>> -     result |= repack_without_refs(branch_names, branches->nr);
>> +     result |= repack_without_refs(branch_names, branches->nr, NULL);
>>       free(branch_names);
>>
>>       for (i = 0; i < branches->nr; i++) {
>> @@ -1333,7 +1333,8 @@ static int prune_remote(const char *remote, int dry_run)
>>               for (i = 0; i < states.stale.nr; i++)
>>                       delete_refs[i] = states.stale.items[i].util;
>>               if (!dry_run)
>> -                     result |= repack_without_refs(delete_refs, states.stale.nr);
>> +                     result |= repack_without_refs(delete_refs,
>> +                                                   states.stale.nr, NULL);
>>               free(delete_refs);
>>       }
>>
>> diff --git a/refs.h b/refs.h
>> index 1b236f7..db463d0 100644
>> --- a/refs.h
>> +++ b/refs.h
>> @@ -162,7 +162,8 @@ extern void rollback_packed_refs(void);
>>   */
>>  int pack_refs(unsigned int flags);
>>
>> -extern int repack_without_refs(const char **refnames, int n);
>> +extern int repack_without_refs(const char **refnames, int n,
>> +                            struct strbuf *err);
>>
>>  extern int ref_exists(const char *);
>
> How does this related to v16?  The reason I ask is because even
> though v16 0/48 says it is to be applied on 'next' it won't at least
> for me X-< and this is one of the early places where the patches
> fail to apply without adjustment.
Ronnie Sahlberg· Jun 13, 2014, 15:51 UTC · re: Ronnie Sahlberg · lore

This should be merged into patch : 1685d87 receive-pack.c: use a reference transaction for updating the refs

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
---
 builtin/receive-pack.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)
Show changes to builtin/receive-pack.c +11 −10
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 2575d06..64d54f8 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -479,7 +479,7 @@ static char *update(struct command *cmd, struct shallow_info *si)
 	/* only refs/... are allowed */
 	if (!starts_with(name, "refs/") || check_refname_format(name + 5, 0)) {
 		rp_error("refusing to create funny ref '%s' remotely", name);
-		return "funny refname";
+		return xstrdup("funny refname");
 	}
 
 	strbuf_addf(&namespaced_name_buf, "%s%s", get_git_namespace(), name);
@@ -497,20 +497,20 @@ static char *update(struct command *cmd, struct shallow_info *si)
 			rp_error("refusing to update checked out branch: %s", name);
 			if (deny_current_branch == DENY_UNCONFIGURED)
 				refuse_unconfigured_deny();
-			return "branch is currently checked out";
+			return xstrdup("branch is currently checked out");
 		}
 	}
 
 	if (!is_null_sha1(new_sha1) && !has_sha1_file(new_sha1)) {
 		error("unpack should have generated %s, "
 		      "but I can't find it!", sha1_to_hex(new_sha1));
-		return "bad pack";
+		return xstrdup("bad pack");
 	}
 
 	if (!is_null_sha1(old_sha1) && is_null_sha1(new_sha1)) {
 		if (deny_deletes && starts_with(name, "refs/heads/")) {
 			rp_error("denying ref deletion for %s", name);
-			return "deletion prohibited";
+			return xstrdup("deletion prohibited");
 		}
 
 		if (!strcmp(namespaced_name, head_name)) {
@@ -525,7 +525,8 @@ static char *update(struct command *cmd, struct shallow_info *si)
 				if (deny_delete_current == DENY_UNCONFIGURED)
 					refuse_unconfigured_deny_delete_current();
 				rp_error("refusing to delete the current branch: %s", name);
-				return "deletion of the current branch prohibited";
+				return xstrdup("deletion of the current branch "
+					       "prohibited");
 			}
 		}
 	}
@@ -543,19 +544,19 @@ static char *update(struct command *cmd, struct shallow_info *si)
 		    old_object->type != OBJ_COMMIT ||
 		    new_object->type != OBJ_COMMIT) {
 			error("bad sha1 objects for %s", name);
-			return "bad ref";
+			return xstrdup("bad ref");
 		}
 		old_commit = (struct commit *)old_object;
 		new_commit = (struct commit *)new_object;
 		if (!in_merge_bases(old_commit, new_commit)) {
 			rp_error("denying non-fast-forward %s"
 				 " (you should pull first)", name);
-			return "non-fast-forward";
+			return xstrdup("non-fast-forward");
 		}
 	}
 	if (run_update_hook(cmd)) {
 		rp_error("hook declined to update %s", name);
-		return "hook declined";
+		return xstrdup("hook declined");
 	}
 
 	if (is_null_sha1(new_sha1)) {
@@ -570,7 +571,7 @@ static char *update(struct command *cmd, struct shallow_info *si)
 		}
 		if (delete_ref(namespaced_name, old_sha1, 0)) {
 			rp_error("failed to delete %s", name);
-			return "failed to delete";
+			return xstrdup("failed to delete");
 		}
 		return NULL; /* good */
 	}
@@ -580,7 +581,7 @@ static char *update(struct command *cmd, struct shallow_info *si)
 
 		if (shallow_update && si->shallow_ref[cmd->index] &&
 		    update_shallow_ref(cmd, si))
-			return "shallow error";
+			return xstrdup("shallow error");
 
 		transaction = ref_transaction_begin(&err);
 		if (!transaction ||
-- 
2.0.0.415.g8cd8cf8

← back to recent threads