Ejemplo n.º 1
0
 public RefUpdate(RefDatabase refDb, Ref r, FileInfo f)
 {
     _db            = refDb;
     _ref           = r;
     OldObjectId    = r.ObjectId;
     _looseFile     = f;
     _refLogMessage = string.Empty;
     Result         = RefUpdateResult.NotAttempted;
 }
Ejemplo n.º 2
0
 public RefUpdate(RefDatabase refDb, Ref r, FileInfo f)
 {
     _db = refDb;
     _ref = r;
     OldObjectId = r.ObjectId;
     _looseFile = f;
     _refLogMessage = string.Empty;
     Result = RefUpdateResult.NotAttempted;
 }
Ejemplo n.º 3
0
        static private List <RepositoryListener> allListeners = new List <RepositoryListener>(); //TODO: make thread safe

        /**
         * Construct a representation of a Git repository.
         *
         * @param d
         *            GIT_DIR (the location of the repository metadata).
         * @throws IOException
         *             the repository appears to already exist but cannot be
         *             accessed.
         */
        public Repository(DirectoryInfo gitDirectory)
        {
            Directory       = gitDirectory;
            _refDb          = new RefDatabase(this);
            _objectDatabase = new ObjectDirectory(new DirectoryInfo(FS.resolve(gitDirectory, "objects").FullName));

            var userConfig = SystemReader.getInstance().openUserConfig();

            try
            {
                userConfig.load();
            }
            catch (ConfigInvalidException e1)
            {
                Dispose();

                throw new IOException("User config file "
                                      + userConfig.getFile().FullName + " invalid: "
                                      + e1, e1);
            }

            Config = new RepositoryConfig(userConfig, (FileInfo)FS.resolve(gitDirectory, "config"));

            WorkingDirectory = gitDirectory.Parent;

            if (_objectDatabase.exists())
            {
                try
                {
                    Config.load();
                }
                catch (ConfigInvalidException e1)
                {
                    Dispose();
                    throw new IOException("Unknown repository format", e1);
                }

                string repositoryFormatVersion = Config.getString("core", null, "repositoryFormatVersion");

                if (!"0".Equals(repositoryFormatVersion))
                {
                    Dispose();
                    throw new IOException("Unknown repository format \""
                                          + repositoryFormatVersion + "\"; expected \"0\".");
                }
            }
        }
Ejemplo n.º 4
0
        /**
         * Construct a representation of a Git repository.
         *
         * @param d
         *            GIT_DIR (the location of the repository metadata).
         * @throws IOException
         *             the repository appears to already exist but cannot be
         *             accessed.
         */
        public Repository(DirectoryInfo gitDirectory)
        {
            Directory = gitDirectory;
            _refDb = new RefDatabase(this);
            _objectDatabase = new ObjectDirectory(new DirectoryInfo(FS.resolve(gitDirectory, "objects").FullName));

            var userConfig = SystemReader.getInstance().openUserConfig();

            try
            {
                userConfig.load();
            }
            catch (ConfigInvalidException e1)
            {
                throw new IOException("User config file "
                    + userConfig.getFile().FullName + " invalid: "
                    + e1, e1);
            }

            Config = new RepositoryConfig(userConfig, (FileInfo)FS.resolve(gitDirectory, "config"));

            WorkingDirectory = gitDirectory.Parent;

            if (_objectDatabase.exists())
            {
                try
                {
                    Config.load();
                }
                catch (ConfigInvalidException e1)
                {
                    throw new IOException("Unknown repository format", e1);
                }

                string repositoryFormatVersion = Config.getString("core", null, "repositoryFormatVersion");

                if (!"0".Equals(repositoryFormatVersion))
                {
                    throw new IOException("Unknown repository format \""
                                          + repositoryFormatVersion + "\"; expected \"0\".");
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Construct a representation of a Git repository using the given parameters possibly overriding default conventions..
        /// </summary>
        /// <param name="d">GIT_DIR (the location of the repository metadata). May be null for default value in which case it depends on GIT_WORK_TREE.</param>
        /// <param name="workTree">GIT_WORK_TREE (the root of the checkout). May be null for default value if GIT_DIR is</param>
        /// <param name="objectDir">GIT_OBJECT_DIRECTORY (where objects and are stored). May be null for default value. Relative names ares resolved against GIT_WORK_TREE</param>
        /// <param name="alternateObjectDir">GIT_ALTERNATE_OBJECT_DIRECTORIES (where more objects are read from). May be null for default value. Relative names ares resolved against GIT_WORK_TREE</param>
        /// <param name="indexFile">GIT_INDEX_FILE (the location of the index file). May be null for default value. Relative names ares resolved against GIT_WORK_TREE.</param>
        public Repository(DirectoryInfo d, DirectoryInfo workTree, DirectoryInfo objectDir,
                DirectoryInfo[] alternateObjectDir, FileInfo indexFile)
        {
            if (workTree != null)
            {
                workDir = workTree;
                if (d == null)
                    Directory = PathUtil.CombineDirectoryPath(workTree, Constants.DOT_GIT);
                else
                    Directory = d;
            }
            else
            {
                if (d != null)
                    Directory = d;
                else
                {
                    Dispose();
                    throw new ArgumentException("Either GIT_DIR or GIT_WORK_TREE must be passed to Repository constructor");
                }
            }

            var userConfig = SystemReader.getInstance().openUserConfig();

            try
            {
                userConfig.load();
            }
            catch (ConfigInvalidException e1)
            {
                Dispose();

                throw new IOException("User config file "
                    + userConfig.getFile().FullName + " invalid: "
                    + e1, e1);
            }

            Config = new RepositoryConfig(userConfig, (FileInfo)FS.resolve(Directory, "config"));

            try
            {
                Config.load();
            }
            catch (ConfigInvalidException e1)
            {
                Dispose();
                throw new IOException("Unknown repository format", e1);
            }

            if (workDir == null)
            {
                String workTreeConfig = Config.getString("core", null, "worktree");
                if (workTreeConfig != null)
                {
                    workDir = (DirectoryInfo)FS.resolve(d, workTreeConfig);
                }
                else
                {
                    workDir = Directory.Parent;
                }
            }

            _refDb = new RefDirectory(this);
            if (objectDir != null)
                _objectDatabase = new ObjectDirectory(PathUtil.CombineDirectoryPath(objectDir, ""),
                        alternateObjectDir);
            else
                _objectDatabase = new ObjectDirectory(PathUtil.CombineDirectoryPath(Directory, "objects"),
                        alternateObjectDir);

            if (indexFile != null)
                this.indexFile = indexFile;
            else
                this.indexFile = PathUtil.CombineFilePath(Directory, "index");

            if (_objectDatabase.exists())
            {
                string repositoryFormatVersion = Config.getString("core", null, "repositoryFormatVersion");

                if (!"0".Equals(repositoryFormatVersion))
                {
                    Dispose();
                    throw new IOException("Unknown repository format \""
                                          + repositoryFormatVersion + "\"; expected \"0\".");
                }
            }
        }
Ejemplo n.º 6
0
 public ExtendedRefWriter(IEnumerable <Ref> refs, RefDatabase db)
     : base(refs)
 {
     _refDb = db;
 }
Ejemplo n.º 7
0
            #region Constructors

            public ExtendedRefWriter(IEnumerable<Ref> refs, RefDatabase db)
                : base(refs)
            {