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