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>(); }
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")); }
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); } }