1/* 2 * GIT - The information manager from hell 3 * 4 * Copyright (C) Linus Torvalds, 2005 5 */ 6#include "cache.h" 7 8/* 9 * If you want to, you can share the DB area with any number of branches. 10 * That has advantages: you can save space by sharing all the SHA1 objects. 11 * On the other hand, it might just make lookup slower and messier. You 12 * be the judge. The default case is to have one DB per managed directory. 13 */ 14int main(int argc, char **argv) 15{ 16 char *sha1_dir, *path; 17 int len, i; 18 19 if (mkdir(".git", 0755) < 0) { 20 perror("unable to create .git directory"); 21 exit(1); 22 } 23 24 sha1_dir = getenv(DB_ENVIRONMENT); 25 if (sha1_dir) { 26 struct stat st; 27 if (!stat(sha1_dir, &st) && S_ISDIR(st.st_mode)) 28 return 0; 29 fprintf(stderr, "DB_ENVIRONMENT set to bad directory %s: ", sha1_dir); 30 } 31 32 sha1_dir = DEFAULT_DB_ENVIRONMENT; 33 fprintf(stderr, "defaulting to private storage area\n"); 34 len = strlen(sha1_dir); 35 if (mkdir(sha1_dir, 0755) < 0) { 36 if (errno != EEXIST) { 37 perror(sha1_dir); 38 exit(1); 39 } 40 } 41 path = malloc(len + 40); 42 memcpy(path, sha1_dir, len); 43 for (i = 0; i < 256; i++) { 44 sprintf(path+len, "/%02x", i); 45 if (mkdir(path, 0755) < 0) { 46 if (errno != EEXIST) { 47 perror(path); 48 exit(1); 49 } 50 } 51 } 52 return 0; 53}