public RemoteRefUpdate(Repository localDb, string srcRef, string remoteName, bool forceUpdate, string localName, ObjectId expectedOldObjectId) { if (remoteName == null) throw new ArgumentException("Remote name can't be null."); SourceRef = srcRef; NewObjectId = (srcRef == null ? ObjectId.ZeroId : localDb.Resolve(srcRef)); if (NewObjectId == null) { throw new IOException("Source ref " + srcRef + " doesn't resolve to any object."); } RemoteName = remoteName; ForceUpdate = forceUpdate; if (localName != null && localDb != null) { TrackingRefUpdate = new TrackingRefUpdate(localDb, localName, remoteName, true, NewObjectId, "push"); } else { TrackingRefUpdate = null; } this.localDb = localDb; ExpectedOldObjectId = expectedOldObjectId; Status = UpdateStatus.NOT_ATTEMPTED; }
private void deleteTrackingRef(FetchResult result, Repository db, RevWalk.RevWalk walk, RefSpec spec, Ref localRef) { string name = localRef.Name; try { TrackingRefUpdate u = new TrackingRefUpdate(db, name, spec.Source, true, ObjectId.ZeroId, "deleted"); result.Add(u); if (_transport.DryRun) { return; } u.Delete(walk); switch (u.Result) { case RefUpdate.RefUpdateResult.New: case RefUpdate.RefUpdateResult.NoChange: case RefUpdate.RefUpdateResult.FastForward: case RefUpdate.RefUpdateResult.Forced: break; default: throw new TransportException(_transport.Uri, "Cannot delete stale tracking ref " + name + ": " + u.Result.ToString()); } } catch (System.IO.IOException e) { throw new TransportException(_transport.Uri, "Cannot delete stale tracking ref " + name, e); } }
private string longTypeOf(TrackingRefUpdate u) { RefUpdate.RefUpdateResult r = u.Result; if (r == RefUpdate.RefUpdateResult.LockFailure) return "[lock fail]"; if (r == RefUpdate.RefUpdateResult.IOFailure) return "[i/o error]"; if (r == RefUpdate.RefUpdateResult.Rejected) return "[rejected]"; if (ObjectId.ZeroId.Equals(u.NewObjectId)) return "[deleted]"; if (r == RefUpdate.RefUpdateResult.New) { if (u.RemoteName.StartsWith(Constants.R_HEADS)) return "[new branch]"; if (u.LocalName.StartsWith(Constants.R_TAGS)) return "[new tag]"; return "[new]"; } if (r == RefUpdate.RefUpdateResult.Forced) { string aOld = u.OldObjectId.Abbreviate(db).name(); string aNew = u.NewObjectId.Abbreviate(db).name(); return aOld + "..." + aNew; } if (r == RefUpdate.RefUpdateResult.FastForward) { string aOld = u.OldObjectId.Abbreviate(db).name(); string aNew = u.NewObjectId.Abbreviate(db).name(); return aOld + ".." + aNew; } if (r == RefUpdate.RefUpdateResult.NoChange) return "[up to date]"; return "[" + r + "]"; }
public void Add(TrackingRefUpdate u) { updates.Add(u.LocalName, u); }