setup: split off a function to handle hitting ceiling in repo search
Perhaps some day, other similar conditions (hitting the mount point, hitting the root of the file system) will share this code. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		
				
					committed by
					
						
						Junio C Hamano
					
				
			
			
				
	
			
			
			
						parent
						
							68698da540
						
					
				
				
					commit
					f161edebb6
				
			
							
								
								
									
										21
									
								
								setup.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								setup.c
									
									
									
									
									
								
							@ -378,6 +378,16 @@ static const char *setup_bare_git_dir(const char *work_tree_env,
 | 
				
			|||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const char *setup_nongit(const char *cwd, int *nongit_ok)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (!nongit_ok)
 | 
				
			||||||
 | 
							die("Not a git repository (or any of the parent directories): %s", DEFAULT_GIT_DIR_ENVIRONMENT);
 | 
				
			||||||
 | 
						if (chdir(cwd))
 | 
				
			||||||
 | 
							die_errno("Cannot come back to cwd");
 | 
				
			||||||
 | 
						*nongit_ok = 1;
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * We cannot decide in this function whether we are in the work tree or
 | 
					 * We cannot decide in this function whether we are in the work tree or
 | 
				
			||||||
 * not, since the config can only be read _after_ this function was called.
 | 
					 * not, since the config can only be read _after_ this function was called.
 | 
				
			||||||
@ -443,15 +453,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
 | 
				
			|||||||
			return setup_bare_git_dir(work_tree_env, offset,
 | 
								return setup_bare_git_dir(work_tree_env, offset,
 | 
				
			||||||
							len, cwd, nongit_ok);
 | 
												len, cwd, nongit_ok);
 | 
				
			||||||
		while (--offset > ceil_offset && cwd[offset] != '/');
 | 
							while (--offset > ceil_offset && cwd[offset] != '/');
 | 
				
			||||||
		if (offset <= ceil_offset) {
 | 
							if (offset <= ceil_offset)
 | 
				
			||||||
			if (nongit_ok) {
 | 
								return setup_nongit(cwd, nongit_ok);
 | 
				
			||||||
				if (chdir(cwd))
 | 
					 | 
				
			||||||
					die_errno("Cannot come back to cwd");
 | 
					 | 
				
			||||||
				*nongit_ok = 1;
 | 
					 | 
				
			||||||
				return NULL;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			die("Not a git repository (or any of the parent directories): %s", DEFAULT_GIT_DIR_ENVIRONMENT);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if (one_filesystem) {
 | 
							if (one_filesystem) {
 | 
				
			||||||
			if (stat("..", &buf)) {
 | 
								if (stat("..", &buf)) {
 | 
				
			||||||
				cwd[offset] = '\0';
 | 
									cwd[offset] = '\0';
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user