public void NotifyCallback(IntPtr baton, SvnPath Path, SvnWcNotify.Action action, Svn.NodeKind kind, AprString mimeType, SvnWcNotify.State contentState, SvnWcNotify.State propState, int revNum) { switch(action) { case SvnWcNotify.Action.Add: if (!mimeType.IsNull && !mimeType.ToString().StartsWith("text/")) Console.WriteLine("A (bin) {0}", Path); else Console.WriteLine("A {0}", Path); mChanged = true; break; case SvnWcNotify.Action.BlameRevision: break; case SvnWcNotify.Action.CommitAdded: if (!mimeType.IsNull && !mimeType.ToString().StartsWith("text/")) Console.WriteLine("Adding (bin) {0}", Path); else Console.WriteLine("Adding {0}", Path); break; case SvnWcNotify.Action.CommitDeleted: Console.WriteLine("Deleting {0}", Path); break; case SvnWcNotify.Action.CommitModified: Console.WriteLine("Sending {0}", Path); break; case SvnWcNotify.Action.CommitReplaced: Console.WriteLine("Replacing {0}", Path); break; case SvnWcNotify.Action.Copy: break; case SvnWcNotify.Action.Delete: Console.WriteLine("D {0}", Path); mChanged = true; break; case SvnWcNotify.Action.FailedRevert: Console.WriteLine("Failed to revert '{0}' -- try updating instead.", Path); break; case SvnWcNotify.Action.PostfixTxdelta: if( !mTxDelta ) { Console.Write("Transmitting file data "); mTxDelta = true; } Console.Write("."); break; case SvnWcNotify.Action.Resolved: Console.WriteLine("Resolved conflicted state of '{0}'", Path); break; case SvnWcNotify.Action.Restore: Console.WriteLine("Restored '{0}'", Path); break; case SvnWcNotify.Action.Revert: Console.WriteLine("Reverted '{0}'", Path); break; case SvnWcNotify.Action.Skip: if (contentState == SvnWcNotify.State.Missing) Console.WriteLine("Skipped missing target: '{0}'", Path); else Console.WriteLine("Skipped '{0}'", Path); break; case SvnWcNotify.Action.StatusCompleted: if( revNum >= 0 ) Console.WriteLine("Status against revision: {0}", revNum); break; case SvnWcNotify.Action.StatusExternal: Console.WriteLine("\nPerforming status on external item at '{0}'", Path); break; case SvnWcNotify.Action.UpdateAdd: Console.WriteLine("A {0}", Path); mChanged = true; break; case SvnWcNotify.Action.UpdateCompleted: if( revNum >= 0 ) { if( mSubCmd.LongName == "export" ) Console.WriteLine("Exported {0}revision {1}.", (mInExternal) ? "external at " : "", revNum); else if( mSubCmd.LongName == "checkout" ) Console.WriteLine("Checked out {0}revision {1}.", (mInExternal) ? "external at " : "", revNum); else { if( mChanged ) Console.WriteLine("Updated {0}to revision {1}.", (mInExternal) ? "external at " : "", revNum); else Console.WriteLine("{0}t revision {1}.", (mInExternal) ? "External a" : "A", revNum); } } else /* no revision */ { if( mSubCmd.LongName == "export" ) Console.WriteLine("{0}xport complete.", (mInExternal) ? "External e" : "E"); else if( mSubCmd.LongName == "checkout" ) Console.WriteLine("{0}heckout complete.\n", (mInExternal) ? "External c" : "C"); else Console.WriteLine("{0}pdate complete.\n", (mInExternal) ? "External u" : "U"); } if( mInExternal ) Console.WriteLine(); mInExternal = false; mChanged = false; break; case SvnWcNotify.Action.UpdateDelete: Console.WriteLine("D {0}", Path); mChanged = true; break; case SvnWcNotify.Action.UpdateExternal: Console.WriteLine("\nFetching external item into '{0}'", Path); mInExternal = true; break; case SvnWcNotify.Action.UpdateUpdate: string s1 = " "; string s2 = " "; if (! ((kind == Svn.NodeKind.Dir) && ((propState == SvnWcNotify.State.Inapplicable) || (propState == SvnWcNotify.State.Unknown) || (propState == SvnWcNotify.State.Unchanged)))) { mChanged = true; if (kind == Svn.NodeKind.File) { if (contentState == SvnWcNotify.State.Conflicted) s1 = "C"; else if (contentState == SvnWcNotify.State.Merged) s1 = "G"; else if (contentState == SvnWcNotify.State.Changed) s1 = "U"; } if (propState == SvnWcNotify.State.Conflicted) s2 = "C"; else if (propState == SvnWcNotify.State.Merged) s2 = "G"; else if (propState == SvnWcNotify.State.Changed) s2 = "U"; if (! ((contentState == SvnWcNotify.State.Unchanged || contentState == SvnWcNotify.State.Unknown) && (propState == SvnWcNotify.State.Unchanged || propState == SvnWcNotify.State.Unknown))) Console.WriteLine("{0}{1} {2}", s1, s2, Path); } break; } }
// svn_wc_notify_func_t Wrapper public SvnDelegate(SvnWcNotify.Func func) { mFunc = func; mWrapperFunc = new Svn.svn_wc_notify_func_t(SvnWcNotifyFuncWrapper); }