private void status(ReceiveCommand cmd, RefUpdate.RefUpdateResult result) { switch (result) { case RefUpdate.RefUpdateResult.NotAttempted: cmd.setResult(ReceiveCommand.Result.NOT_ATTEMPTED); break; case RefUpdate.RefUpdateResult.LockFailure: case RefUpdate.RefUpdateResult.IOFailure: cmd.setResult(ReceiveCommand.Result.LOCK_FAILURE); break; case RefUpdate.RefUpdateResult.NoChange: case RefUpdate.RefUpdateResult.New: case RefUpdate.RefUpdateResult.Forced: case RefUpdate.RefUpdateResult.FastForward: cmd.setResult(ReceiveCommand.Result.OK); break; case RefUpdate.RefUpdateResult.Rejected: cmd.setResult(ReceiveCommand.Result.REJECTED_NONFASTFORWARD); break; case RefUpdate.RefUpdateResult.RejectedCurrentBranch: cmd.setResult(ReceiveCommand.Result.REJECTED_CURRENT_BRANCH); break; default: cmd.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON, result.ToString()); break; } }
private void execute(ReceiveCommand cmd) { try { RefUpdate ru = db.UpdateRef(cmd.getRefName()); ru.RefLogIdent = getRefLogIdent(); switch (cmd.getType()) { case ReceiveCommand.Type.DELETE: if (!ObjectId.ZeroId.Equals(cmd.getOldId())) { ru.ExpectedOldObjectId = cmd.getOldId(); } ru.IsForceUpdate = true; status(cmd, ru.Delete(walk)); break; case ReceiveCommand.Type.CREATE: case ReceiveCommand.Type.UPDATE: case ReceiveCommand.Type.UPDATE_NONFASTFORWARD: ru.IsForceUpdate = isAllowNonFastForwards(); ru.ExpectedOldObjectId = cmd.getOldId(); ru.NewObjectId = cmd.getNewId(); ru.SetRefLogMessage("push", true); status(cmd, ru.Update(walk)); break; } } catch (IOException err) { cmd.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON, "lock error: " + err.Message); } }
private List<ReceiveCommand> filterCommands(ReceiveCommand.Result want) { List<ReceiveCommand> r = new List<ReceiveCommand>(commands.Count); foreach (ReceiveCommand cmd in commands) { if (cmd.getResult() == want) r.Add(cmd); } return r; }
private void recvCommands() { for (;;) { string line; try { line = pckIn.ReadStringNoLF(); } catch (EndOfStreamException eof) { if (commands.isEmpty()) { return; } throw eof; } if (commands.isEmpty()) { int nul = line.IndexOf('\0'); if (nul >= 0) { foreach (string c in line.Substring(nul + 1).Split(' ')) { enabledCapabilities.Add(c); } line = line.Slice(0, nul); } } if (line.Length == 0) break; if (line.Length < 83) { string m = "error: invalid protocol: wanted 'old new ref'"; sendError(m); throw new PackProtocolException(m); } ObjectId oldId = ObjectId.FromString(line.Slice(0, 40)); ObjectId newId = ObjectId.FromString(line.Slice(41, 81)); string name = line.Substring(82); ReceiveCommand cmd = new ReceiveCommand(oldId, newId, name); cmd.setRef(refs[cmd.getRefName()]); commands.Add(cmd); } }