http-fetch: make -a standard behaviour
				
					
				
			This is a follow-up to a6c786fce8 (Mark http-fetch without -a as
deprecated, 2011-08-23). For more than six years, we have been warning
when `-a` is not provided, and the documentation has been saying that
`-a` will become the default.
It is a bit unclear what "default" means here. There is no such thing as
`http-fetch --no-a`. But according to my searches, no-one has been
asking on the mailing list how they should silence the warning and
prepare for overriding the flipped default. So let's assume that
everybody is happy with `-a`. They should be, since not using it may
break the repo in such a way that Git itself is unable to fix it.
Always behave as if `-a` was given. Since `-a` implies `-c` (get commit
objects) and `-t` (get trees), all three options are now unnecessary.
Document all of these as historical artefacts that have no effect.
Leave no-op code for handling these options in http-fetch.c. The
options-handling is currently rather loose. If someone tightens it, we
will not want these ignored options to accidentally turn into hard
errors.
Since `-a` was the only safe and sane usage and we have been pushing
people towards it for a long time, refrain from warning when it is used
"unnecessarily" now. Similarly, do not add anything scary-looking to the
man-page about how it will be removed in the future. We can always do so
later. (It is not like we are in desperate need of freeing up
one-letter arguments.)
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Junio C Hamano
					
				
			
			
				
	
			
			
			
						parent
						
							468165c1d8
						
					
				
				
					commit
					2e85a0c8ab
				
			@ -15,8 +15,9 @@ DESCRIPTION
 | 
				
			|||||||
-----------
 | 
					-----------
 | 
				
			||||||
Downloads a remote Git repository via HTTP.
 | 
					Downloads a remote Git repository via HTTP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*NOTE*: use of this command without -a is deprecated.  The -a
 | 
					This command always gets all objects. Historically, there were three options
 | 
				
			||||||
behaviour will become the default in a future release.
 | 
					`-a`, `-c` and `-t` for choosing which objects to download. They are now
 | 
				
			||||||
 | 
					silently ignored.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OPTIONS
 | 
					OPTIONS
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
@ -24,12 +25,8 @@ commit-id::
 | 
				
			|||||||
        Either the hash or the filename under [URL]/refs/ to
 | 
					        Either the hash or the filename under [URL]/refs/ to
 | 
				
			||||||
        pull.
 | 
					        pull.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-c::
 | 
					-a, -c, -t::
 | 
				
			||||||
	Get the commit objects.
 | 
						These options are ignored for historical reasons.
 | 
				
			||||||
-t::
 | 
					 | 
				
			||||||
	Get trees associated with the commit objects.
 | 
					 | 
				
			||||||
-a::
 | 
					 | 
				
			||||||
	Get all the objects.
 | 
					 | 
				
			||||||
-v::
 | 
					-v::
 | 
				
			||||||
	Report what is downloaded.
 | 
						Report what is downloaded.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								http-fetch.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								http-fetch.c
									
									
									
									
									
								
							@ -17,21 +17,13 @@ int cmd_main(int argc, const char **argv)
 | 
				
			|||||||
	char *url = NULL;
 | 
						char *url = NULL;
 | 
				
			||||||
	int arg = 1;
 | 
						int arg = 1;
 | 
				
			||||||
	int rc = 0;
 | 
						int rc = 0;
 | 
				
			||||||
	int get_tree = 0;
 | 
					 | 
				
			||||||
	int get_history = 0;
 | 
					 | 
				
			||||||
	int get_all = 0;
 | 
					 | 
				
			||||||
	int get_verbosely = 0;
 | 
						int get_verbosely = 0;
 | 
				
			||||||
	int get_recover = 0;
 | 
						int get_recover = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (arg < argc && argv[arg][0] == '-') {
 | 
						while (arg < argc && argv[arg][0] == '-') {
 | 
				
			||||||
		if (argv[arg][1] == 't') {
 | 
							if (argv[arg][1] == 't') {
 | 
				
			||||||
			get_tree = 1;
 | 
					 | 
				
			||||||
		} else if (argv[arg][1] == 'c') {
 | 
							} else if (argv[arg][1] == 'c') {
 | 
				
			||||||
			get_history = 1;
 | 
					 | 
				
			||||||
		} else if (argv[arg][1] == 'a') {
 | 
							} else if (argv[arg][1] == 'a') {
 | 
				
			||||||
			get_all = 1;
 | 
					 | 
				
			||||||
			get_tree = 1;
 | 
					 | 
				
			||||||
			get_history = 1;
 | 
					 | 
				
			||||||
		} else if (argv[arg][1] == 'v') {
 | 
							} else if (argv[arg][1] == 'v') {
 | 
				
			||||||
			get_verbosely = 1;
 | 
								get_verbosely = 1;
 | 
				
			||||||
		} else if (argv[arg][1] == 'w') {
 | 
							} else if (argv[arg][1] == 'w') {
 | 
				
			||||||
@ -55,10 +47,6 @@ int cmd_main(int argc, const char **argv)
 | 
				
			|||||||
		commits = 1;
 | 
							commits = 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (get_all == 0)
 | 
					 | 
				
			||||||
		warning("http-fetch: use without -a is deprecated.\n"
 | 
					 | 
				
			||||||
			"In a future release, -a will become the default.");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (argv[arg])
 | 
						if (argv[arg])
 | 
				
			||||||
		str_end_url_with_slash(argv[arg], &url);
 | 
							str_end_url_with_slash(argv[arg], &url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -68,9 +56,9 @@ int cmd_main(int argc, const char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	http_init(NULL, url, 0);
 | 
						http_init(NULL, url, 0);
 | 
				
			||||||
	walker = get_http_walker(url);
 | 
						walker = get_http_walker(url);
 | 
				
			||||||
	walker->get_tree = get_tree;
 | 
						walker->get_tree = 1;
 | 
				
			||||||
	walker->get_history = get_history;
 | 
						walker->get_history = 1;
 | 
				
			||||||
	walker->get_all = get_all;
 | 
						walker->get_all = 1;
 | 
				
			||||||
	walker->get_verbosely = get_verbosely;
 | 
						walker->get_verbosely = get_verbosely;
 | 
				
			||||||
	walker->get_recover = get_recover;
 | 
						walker->get_recover = get_recover;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -169,6 +169,17 @@ test_expect_success 'fetch changes via manual http-fetch' '
 | 
				
			|||||||
	test_cmp file clone2/file
 | 
						test_cmp file clone2/file
 | 
				
			||||||
'
 | 
					'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test_expect_success 'manual http-fetch without -a works just as well' '
 | 
				
			||||||
 | 
						cp -R clone-tmpl clone3 &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						HEAD=$(git rev-parse --verify HEAD) &&
 | 
				
			||||||
 | 
						(cd clone3 &&
 | 
				
			||||||
 | 
						 git http-fetch -w heads/master-new $HEAD $(git config remote.origin.url) &&
 | 
				
			||||||
 | 
						 git checkout master-new &&
 | 
				
			||||||
 | 
						 test $HEAD = $(git rev-parse --verify HEAD)) &&
 | 
				
			||||||
 | 
						test_cmp file clone3/file
 | 
				
			||||||
 | 
					'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test_expect_success 'http remote detects correct HEAD' '
 | 
					test_expect_success 'http remote detects correct HEAD' '
 | 
				
			||||||
	git push public master:other &&
 | 
						git push public master:other &&
 | 
				
			||||||
	(cd clone &&
 | 
						(cd clone &&
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user