From: Junio C Hamano Date: Tue, 21 Feb 2012 23:13:16 +0000 (-0800) Subject: Merge branch 'jk/git-dir-lookup' into maint X-Git-Tag: v1.7.9.2~6 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/0cfba96121b9617668a7b4ad18e3ae3a19dc8755?ds=inline;hp=-c Merge branch 'jk/git-dir-lookup' into maint * jk/git-dir-lookup: standardize and improve lookup rules for external local repos --- 0cfba96121b9617668a7b4ad18e3ae3a19dc8755 diff --combined builtin/clone.c index 86db954730,b11dd6dd61..df8ae750dd --- a/builtin/clone.c +++ b/builtin/clone.c @@@ -84,8 -84,8 +84,8 @@@ static struct option builtin_clone_opti "directory from which templates will be used"), OPT_CALLBACK(0 , "reference", &option_reference, "repo", "reference repository", &opt_parse_reference), - OPT_STRING('o', "origin", &option_origin, "branch", - "use instead of 'origin' to track upstream"), + OPT_STRING('o', "origin", &option_origin, "name", + "use instead of 'origin' to track upstream"), OPT_STRING('b', "branch", &option_branch, "branch", "checkout instead of the remote's HEAD"), OPT_STRING('u', "upload-pack", &option_upload_pack, "path", @@@ -105,7 -105,7 +105,7 @@@ static const char *argv_submodule[] = static char *get_repo_path(const char *repo, int *is_bundle) { - static char *suffix[] = { "/.git", ".git", "" }; + static char *suffix[] = { "/.git", "", ".git/.git", ".git" }; static char *bundle_suffix[] = { ".bundle", "" }; struct stat st; int i; @@@ -115,7 -115,7 +115,7 @@@ path = mkpath("%s%s", repo, suffix[i]); if (stat(path, &st)) continue; - if (S_ISDIR(st.st_mode)) { + if (S_ISDIR(st.st_mode) && is_git_directory(path)) { *is_bundle = 0; return xstrdup(absolute_path(path)); } else if (S_ISREG(st.st_mode) && st.st_size > 8) { diff --combined cache.h index c07f54e9cf,3dfb95d8aa..3a8e1258e7 --- a/cache.h +++ b/cache.h @@@ -35,7 -35,6 +35,7 @@@ int git_inflate(git_zstream *, int flus void git_deflate_init(git_zstream *, int level); void git_deflate_init_gzip(git_zstream *, int level); void git_deflate_end(git_zstream *); +int git_deflate_abort(git_zstream *); int git_deflate_end_gently(git_zstream *); int git_deflate(git_zstream *, int flush); unsigned long git_deflate_bound(git_zstream *, unsigned long); @@@ -307,7 -306,7 +307,7 @@@ static inline unsigned int canon_mode(u } #define flexible_size(STRUCT,len) ((offsetof(struct STRUCT,name) + (len) + 8) & ~7) -#define cache_entry_size(len) flexible_size(cache_entry,len) +#define cache_entry_size(len) (offsetof(struct cache_entry,name) + (len) + 1) #define ondisk_cache_entry_size(len) flexible_size(ondisk_cache_entry,len) #define ondisk_cache_entry_extended_size(len) flexible_size(ondisk_cache_entry_extended,len) @@@ -317,6 -316,7 +317,6 @@@ struct index_state struct string_list *resolve_undo; struct cache_tree *cache_tree; struct cache_time timestamp; - void *alloc; unsigned name_hash_initialized : 1, initialized : 1; struct hash_table name_hash; @@@ -432,6 -432,7 +432,7 @@@ extern char *git_work_tree_cfg extern int is_inside_work_tree(void); extern int have_git_dir(void); extern const char *get_git_dir(void); + extern int is_git_directory(const char *path); extern char *get_object_directory(void); extern char *get_index_file(void); extern char *get_graft_file(void); @@@ -598,7 -599,6 +599,7 @@@ extern size_t packed_git_window_size extern size_t packed_git_limit; extern size_t delta_base_cache_limit; extern unsigned long big_file_threshold; +extern unsigned long pack_size_limit_cfg; extern int read_replace_refs; extern int fsync_object_files; extern int core_preload_index; @@@ -833,9 -833,7 +834,9 @@@ static inline int get_sha1_with_context extern int get_sha1_hex(const char *hex, unsigned char *sha1); extern char *sha1_to_hex(const unsigned char *sha1); /* static buffer result! */ -extern int read_ref(const char *filename, unsigned char *sha1); +extern int read_ref_full(const char *refname, unsigned char *sha1, + int reading, int *flags); +extern int read_ref(const char *refname, unsigned char *sha1); /* * Resolve a reference, recursively following symbolic refererences. @@@ -867,8 -865,7 +868,8 @@@ * * errno is sometimes set on errors, but not always. */ -extern const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *flag); +extern const char *resolve_ref_unsafe(const char *ref, unsigned char *sha1, int reading, int *flag); +extern char *resolve_refdup(const char *ref, unsigned char *sha1, int reading, int *flag); extern int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref); extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref); @@@ -877,7 -874,7 +878,7 @@@ extern int get_sha1_mb(const char *str extern int refname_match(const char *abbrev_name, const char *full_name, const char **rules); extern const char *ref_rev_parse_rules[]; -extern const char *ref_fetch_rules[]; +#define ref_fetch_rules ref_rev_parse_rules extern int create_symref(const char *ref, const char *refs_heads_master, const char *logmsg); extern int validate_headref(const char *ref); @@@ -1028,16 -1025,17 +1029,16 @@@ struct ref extern struct ref *find_ref_by_name(const struct ref *list, const char *name); #define CONNECT_VERBOSE (1u << 0) -extern char *git_getpass(const char *prompt); extern struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags); extern int finish_connect(struct child_process *conn); extern int git_connection_is_socket(struct child_process *conn); -extern int path_match(const char *path, int nr, char **match); struct extra_have_objects { int nr, alloc; unsigned char (*array)[20]; }; -extern struct ref **get_remote_heads(int in, struct ref **list, int nr_match, char **match, unsigned int flags, struct extra_have_objects *); +extern struct ref **get_remote_heads(int in, struct ref **list, unsigned int flags, struct extra_have_objects *); extern int server_supports(const char *feature); +extern const char *parse_feature_request(const char *features, const char *feature); extern struct packed_git *parse_pack_index(unsigned char *sha1, const char *idx_path); @@@ -1176,7 -1174,6 +1177,7 @@@ extern void setup_pager(void) extern const char *pager_program; extern int pager_in_use(void); extern int pager_use_color; +extern int term_columns(void); extern const char *editor_program; extern const char *askpass_program;