Do not perform cross-directory renames when creating packs
A comment on top of create_tmpfile() describes caveats ('can have
problems on various systems (FAT, NFS, Coda)') that should apply
in this situation as well.  This in the end did not end up solving
any of my personal problems, but it might be a useful cleanup patch
nevertheless.
Signed-off-by: Petr Baudis <pasky@suse.cz>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									18309f4c3e
								
							
						
					
					
						commit
						8b4eb6b6cd
					
				|  | @ -465,7 +465,7 @@ static void write_pack_file(void) | |||
| 			char tmpname[PATH_MAX]; | ||||
| 			int fd; | ||||
| 			snprintf(tmpname, sizeof(tmpname), | ||||
| 				 "%s/tmp_pack_XXXXXX", get_object_directory()); | ||||
| 				 "%s/pack/tmp_pack_XXXXXX", get_object_directory()); | ||||
| 			fd = xmkstemp(tmpname); | ||||
| 			pack_tmp_name = xstrdup(tmpname); | ||||
| 			f = sha1fd(fd, pack_tmp_name); | ||||
|  |  | |||
|  | @ -816,7 +816,7 @@ static void start_packfile(void) | |||
| 	int pack_fd; | ||||
|  | ||||
| 	snprintf(tmpfile, sizeof(tmpfile), | ||||
| 		"%s/tmp_pack_XXXXXX", get_object_directory()); | ||||
| 		"%s/pack/tmp_pack_XXXXXX", get_object_directory()); | ||||
| 	pack_fd = xmkstemp(tmpfile); | ||||
| 	p = xcalloc(1, sizeof(*p) + strlen(tmpfile) + 2); | ||||
| 	strcpy(p->pack_name, tmpfile); | ||||
|  | @ -878,7 +878,7 @@ static char *create_index(void) | |||
| 	} | ||||
|  | ||||
| 	snprintf(tmpfile, sizeof(tmpfile), | ||||
| 		"%s/tmp_idx_XXXXXX", get_object_directory()); | ||||
| 		"%s/pack/tmp_idx_XXXXXX", get_object_directory()); | ||||
| 	idx_fd = xmkstemp(tmpfile); | ||||
| 	f = sha1fd(idx_fd, tmpfile); | ||||
| 	sha1write(f, array, 256 * sizeof(int)); | ||||
|  |  | |||
|  | @ -172,7 +172,7 @@ static char *open_pack_file(char *pack_name) | |||
| 		if (!pack_name) { | ||||
| 			static char tmpfile[PATH_MAX]; | ||||
| 			snprintf(tmpfile, sizeof(tmpfile), | ||||
| 				 "%s/tmp_pack_XXXXXX", get_object_directory()); | ||||
| 				 "%s/pack/tmp_pack_XXXXXX", get_object_directory()); | ||||
| 			output_fd = xmkstemp(tmpfile); | ||||
| 			pack_name = xstrdup(tmpfile); | ||||
| 		} else | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ char *write_idx_file(char *index_name, struct pack_idx_entry **objects, | |||
| 	if (!index_name) { | ||||
| 		static char tmpfile[PATH_MAX]; | ||||
| 		snprintf(tmpfile, sizeof(tmpfile), | ||||
| 			 "%s/tmp_idx_XXXXXX", get_object_directory()); | ||||
| 			 "%s/pack/tmp_idx_XXXXXX", get_object_directory()); | ||||
| 		fd = xmkstemp(tmpfile); | ||||
| 		index_name = xstrdup(tmpfile); | ||||
| 	} else { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Petr Baudis
						Petr Baudis