Пример #1
0
        public WalkFetchConnection(IWalkTransport t, WalkRemoteObjectDatabase w)
        {
            _idBuffer = new MutableObjectId();
            _objectDigest = Constants.newMessageDigest();

            var wt = (Transport)t;
            _local = wt.Local;
            _objCheck = wt.CheckFetchedObjects ? new ObjectChecker() : null;

            _remotes = new List<WalkRemoteObjectDatabase> { w };

            _unfetchedPacks = new LinkedList<RemotePack>();
            _packsConsidered = new List<string>();

            _noPacksYet = new LinkedList<WalkRemoteObjectDatabase>();
            _noPacksYet.AddFirst(w);

            _noAlternatesYet = new LinkedList<WalkRemoteObjectDatabase>();
            _noAlternatesYet.AddFirst(w);

            _fetchErrors = new Dictionary<ObjectId, List<Exception>>();
            _packLocks = new List<PackLock>(4);

            _revWalk = new RevWalk.RevWalk(_local);
            _treeWalk = new TreeWalk.TreeWalk(_local);

            COMPLETE = _revWalk.newFlag("COMPLETE");
            IN_WORK_QUEUE = _revWalk.newFlag("IN_WORK_QUEUE");
            LOCALLY_SEEN = _revWalk.newFlag("LOCALLY_SEEN");

            _localCommitQueue = new DateRevQueue();
            _workQueue = new LinkedList<ObjectId>();
        }
Пример #2
0
            public RemotePack(string lockMessage, List<PackLock> packLocks, ObjectChecker oC, Repository r, WalkRemoteObjectDatabase c, string pn)
            {
                _lockMessage = lockMessage;
                _packLocks = packLocks;
                _objCheck = oC;
                _local = r;
                DirectoryInfo objdir = _local.ObjectsDirectory;
                _connection = c;
                PackName = pn;
                _idxName = IndexPack.GetIndexFileName(PackName.Slice(0, PackName.Length - 5));

                string tn = _idxName;
                if (tn.StartsWith("pack-"))
                {
                    tn = tn.Substring(5);
                }

                if (tn.EndsWith(IndexPack.IndexSuffix))
                {
                    tn = tn.Slice(0, tn.Length - 4);
                }

                TmpIdx = new FileInfo(Path.Combine(objdir.ToString(), "walk-" + tn + ".walkidx"));
            }
Пример #3
0
 private bool DownloadLooseObject(AnyObjectId id, string looseName, WalkRemoteObjectDatabase remote)
 {
     try
     {
         byte[] compressed = remote.open(looseName).toArray();
         VerifyLooseObject(id, compressed);
         SaveLooseObject(id, compressed);
         return true;
     }
     catch (FileNotFoundException e)
     {
         RecordError(id, e);
         return false;
     }
     catch (IOException e)
     {
         throw new TransportException("Cannot download " + id.Name, e);
     }
 }