Teach progress eye-candy to fetch_refs_from_bundle()
With the usual "git" transport, a large-ish transfer with "git fetch" and
"git pull" give progress eye-candy to avoid boring users.  However, not
when they are reading from a bundle. I.e.
    $ git pull ../git-bundle.bndl master
This teaches bundle.c:unbundle() to give "-v" option to index-pack and
tell it to give progress bar when transport decides it is necessary.
The operation in the other direction, "git bundle create", could also
learn to honor --quiet but that is a separate issue.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									ec014eac0e
								
							
						
					
					
						commit
						be042aff24
					
				|  | @ -58,7 +58,7 @@ int cmd_bundle(int argc, const char **argv, const char *prefix) | |||
| 	} else if (!strcmp(cmd, "unbundle")) { | ||||
| 		if (!startup_info->have_repository) | ||||
| 			die(_("Need a repository to unbundle.")); | ||||
| 		return !!unbundle(&header, bundle_fd) || | ||||
| 		return !!unbundle(&header, bundle_fd, 0) || | ||||
| 			list_bundle_refs(&header, argc, argv); | ||||
| 	} else | ||||
| 		usage(builtin_bundle_usage); | ||||
|  |  | |||
							
								
								
									
										7
									
								
								bundle.c
								
								
								
								
							
							
						
						
									
										7
									
								
								bundle.c
								
								
								
								
							|  | @ -380,12 +380,15 @@ int create_bundle(struct bundle_header *header, const char *path, | |||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int unbundle(struct bundle_header *header, int bundle_fd) | ||||
| int unbundle(struct bundle_header *header, int bundle_fd, int flags) | ||||
| { | ||||
| 	const char *argv_index_pack[] = {"index-pack", | ||||
| 		"--fix-thin", "--stdin", NULL}; | ||||
| 					 "--fix-thin", "--stdin", NULL, NULL}; | ||||
| 	struct child_process ip; | ||||
|  | ||||
| 	if (flags & BUNDLE_VERBOSE) | ||||
| 		argv_index_pack[3] = "-v"; | ||||
|  | ||||
| 	if (verify_bundle(header, 0)) | ||||
| 		return -1; | ||||
| 	memset(&ip, 0, sizeof(ip)); | ||||
|  |  | |||
							
								
								
									
										3
									
								
								bundle.h
								
								
								
								
							
							
						
						
									
										3
									
								
								bundle.h
								
								
								
								
							|  | @ -18,7 +18,8 @@ int read_bundle_header(const char *path, struct bundle_header *header); | |||
| int create_bundle(struct bundle_header *header, const char *path, | ||||
| 		int argc, const char **argv); | ||||
| int verify_bundle(struct bundle_header *header, int verbose); | ||||
| int unbundle(struct bundle_header *header, int bundle_fd); | ||||
| #define BUNDLE_VERBOSE 1 | ||||
| int unbundle(struct bundle_header *header, int bundle_fd, int flags); | ||||
| int list_bundle_refs(struct bundle_header *header, | ||||
| 		int argc, const char **argv); | ||||
|  | ||||
|  |  | |||
|  | @ -431,7 +431,8 @@ static int fetch_refs_from_bundle(struct transport *transport, | |||
| 			       int nr_heads, struct ref **to_fetch) | ||||
| { | ||||
| 	struct bundle_transport_data *data = transport->data; | ||||
| 	return unbundle(&data->header, data->fd); | ||||
| 	return unbundle(&data->header, data->fd, | ||||
| 			transport->progress ? BUNDLE_VERBOSE : 0); | ||||
| } | ||||
|  | ||||
| static int close_bundle(struct transport *transport) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano