builtin_clone: use strbuf in cmd_clone()
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									b9e125e07e
								
							
						
					
					
						commit
						b5ff37ac6b
					
				|  | @ -358,8 +358,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix) | ||||||
| 	const char *repo_name, *repo, *work_tree, *git_dir; | 	const char *repo_name, *repo, *work_tree, *git_dir; | ||||||
| 	char *path, *dir; | 	char *path, *dir; | ||||||
| 	const struct ref *refs, *head_points_at, *remote_head, *mapped_refs; | 	const struct ref *refs, *head_points_at, *remote_head, *mapped_refs; | ||||||
| 	char branch_top[256], key[256], value[256]; | 	struct strbuf key = STRBUF_INIT, value = STRBUF_INIT; | ||||||
| 	struct strbuf reflog_msg = STRBUF_INIT; | 	struct strbuf branch_top = STRBUF_INIT, reflog_msg = STRBUF_INIT; | ||||||
| 	struct transport *transport = NULL; | 	struct transport *transport = NULL; | ||||||
| 	char *src_ref_prefix = "refs/heads/"; | 	char *src_ref_prefix = "refs/heads/"; | ||||||
|  |  | ||||||
|  | @ -463,35 +463,36 @@ int cmd_clone(int argc, const char **argv, const char *prefix) | ||||||
| 	if (option_bare) { | 	if (option_bare) { | ||||||
| 		if (option_mirror) | 		if (option_mirror) | ||||||
| 			src_ref_prefix = "refs/"; | 			src_ref_prefix = "refs/"; | ||||||
| 		strcpy(branch_top, src_ref_prefix); | 		strbuf_addstr(&branch_top, src_ref_prefix); | ||||||
|  |  | ||||||
| 		git_config_set("core.bare", "true"); | 		git_config_set("core.bare", "true"); | ||||||
| 	} else { | 	} else { | ||||||
| 		snprintf(branch_top, sizeof(branch_top), | 		strbuf_addf(&branch_top, "refs/remotes/%s/", option_origin); | ||||||
| 			 "refs/remotes/%s/", option_origin); |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (option_mirror || !option_bare) { | 	if (option_mirror || !option_bare) { | ||||||
| 		/* Configure the remote */ | 		/* Configure the remote */ | ||||||
| 		if (option_mirror) { | 		if (option_mirror) { | ||||||
| 			snprintf(key, sizeof(key), | 			strbuf_addf(&key, "remote.%s.mirror", option_origin); | ||||||
| 					"remote.%s.mirror", option_origin); | 			git_config_set(key.buf, "true"); | ||||||
| 			git_config_set(key, "true"); | 			strbuf_reset(&key); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		snprintf(key, sizeof(key), "remote.%s.url", option_origin); | 		strbuf_addf(&key, "remote.%s.url", option_origin); | ||||||
| 		git_config_set(key, repo); | 		git_config_set(key.buf, repo); | ||||||
|  | 			strbuf_reset(&key); | ||||||
|  |  | ||||||
| 		snprintf(key, sizeof(key), "remote.%s.fetch", option_origin); | 		strbuf_addf(&key, "remote.%s.fetch", option_origin); | ||||||
| 		snprintf(value, sizeof(value), | 		strbuf_addf(&value, "+%s*:%s*", src_ref_prefix, branch_top.buf); | ||||||
| 				"+%s*:%s*", src_ref_prefix, branch_top); | 		git_config_set_multivar(key.buf, value.buf, "^$", 0); | ||||||
| 		git_config_set_multivar(key, value, "^$", 0); | 		strbuf_reset(&key); | ||||||
|  | 		strbuf_reset(&value); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	refspec.force = 0; | 	refspec.force = 0; | ||||||
| 	refspec.pattern = 1; | 	refspec.pattern = 1; | ||||||
| 	refspec.src = src_ref_prefix; | 	refspec.src = src_ref_prefix; | ||||||
| 	refspec.dst = branch_top; | 	refspec.dst = branch_top.buf; | ||||||
|  |  | ||||||
| 	if (path && !is_bundle) | 	if (path && !is_bundle) | ||||||
| 		refs = clone_local(path, git_dir); | 		refs = clone_local(path, git_dir); | ||||||
|  | @ -545,7 +546,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) | ||||||
| 				   head_points_at->old_sha1, | 				   head_points_at->old_sha1, | ||||||
| 				   NULL, 0, DIE_ON_ERR); | 				   NULL, 0, DIE_ON_ERR); | ||||||
|  |  | ||||||
| 			strbuf_addstr(&head_ref, branch_top); | 			strbuf_addstr(&head_ref, branch_top.buf); | ||||||
| 			strbuf_addstr(&head_ref, "HEAD"); | 			strbuf_addstr(&head_ref, "HEAD"); | ||||||
|  |  | ||||||
| 			/* Remote branch link */ | 			/* Remote branch link */ | ||||||
|  | @ -553,10 +554,11 @@ int cmd_clone(int argc, const char **argv, const char *prefix) | ||||||
| 				      head_points_at->peer_ref->name, | 				      head_points_at->peer_ref->name, | ||||||
| 				      reflog_msg.buf); | 				      reflog_msg.buf); | ||||||
|  |  | ||||||
| 			snprintf(key, sizeof(key), "branch.%s.remote", head); | 			strbuf_addf(&key, "branch.%s.remote", head); | ||||||
| 			git_config_set(key, option_origin); | 			git_config_set(key.buf, option_origin); | ||||||
| 			snprintf(key, sizeof(key), "branch.%s.merge", head); | 			strbuf_reset(&key); | ||||||
| 			git_config_set(key, head_points_at->name); | 			strbuf_addf(&key, "branch.%s.merge", head); | ||||||
|  | 			git_config_set(key.buf, head_points_at->name); | ||||||
| 		} | 		} | ||||||
| 	} else if (remote_head) { | 	} else if (remote_head) { | ||||||
| 		/* Source had detached HEAD pointing somewhere. */ | 		/* Source had detached HEAD pointing somewhere. */ | ||||||
|  | @ -606,6 +608,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	strbuf_release(&reflog_msg); | 	strbuf_release(&reflog_msg); | ||||||
|  | 	strbuf_release(&branch_top); | ||||||
|  | 	strbuf_release(&key); | ||||||
|  | 	strbuf_release(&value); | ||||||
| 	junk_pid = 0; | 	junk_pid = 0; | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Miklos Vajna
						Miklos Vajna