sharpsvn الحصول على خطاف بعد الالتزام مع "svnlookclient"

StackOverflow https://stackoverflow.com/questions/1258191

  •  12-09-2019
  •  | 
  •  

سؤال

أحاول معرفة كيفية الحصول على رسالة ارتكاب مراجعة معينة. يبدو أن svnlookclient ربما ما أحتاج إليه

لقد وجدت بعض الكود هنا بحيث يبدو وكأنه ما أحتاجه ولكن يبدو أنني أفتقد شيئا ..

الرمز الذي وجدته (هنا على ذلك):

using (SvnLookClient cl = new SvnLookClient())
{
    SvnChangeInfoEventArgs ci;

     //******what is lookorigin? do I pass the revision here??
    cl.GetChangeInfo(ha.LookOrigin, out ci);


    // ci contains information on the commit e.g.
    Console.WriteLine(ci.LogMessage); // Has log message

    foreach (SvnChangeItem i in ci.ChangedPaths)
    {

    }
}
هل كانت مفيدة؟

المحلول

يتم استهداف عميل Svnlook على وجه التحديد باستخدام السنانير في مستودع. يسمح بالوصول إلى المراجعات غير المرنة وبالتالي يحتاج إلى حجج أخرى. (إنه ما يعادل Sharpsvn الأمر "svnlook". إذا كنت بحاجة إلى ما يعادل "SVN"، فيجب عليك أن تنظر إلى SvnClient).

الأصل هو إما: * مسار مستودع واسم المعاملة * أو مسار مستودع ورقم المراجعة

على سبيل المثال، لا يتم ارتكاب المراجعة بعد الالتزام بعد، حتى تتمكن من الوصول إليها عبر عنوان URL العام، كما لو كنت تفعل عادة.

الوثائق تقول (في ما قبل الالتزام.

# The pre-commit hook is invoked before a Subversion txn is
# committed.  Subversion runs this hook by invoking a program
# (script, executable, binary, etc.) named 'pre-commit' (for which
# this file is a template), with the following ordered arguments:
#
#   [1] REPOS-PATH   (the path to this repository)
#   [2] TXN-NAME     (the name of the txn about to be committed)

يساعدك Sharpsvn من خلال عرض:

SvnHookArguments ha; 
if (!SvnHookArguments.ParseHookArguments(args, SvnHookType.PostCommit, false, out ha))
{
    Console.Error.WriteLine("Invalid arguments");
    Environment.Exit(1);  
}

الذي يوزع هذه الحجج بالنسبة لك. (أي في هذه الحالة بسيط للغاية، ولكن هناك خطافات أكثر تقدما .. ويمكن السنانير الحصول على وسائط جديدة في إصدارات التخريب الأحدث). القيمة التي تحتاجها هي في ملكية .Lookorigin من HA.

إذا كنت ترغب فقط في الحصول على رسالة السجل للحصول على نطاق مراجعة محدد (1234-4567)، يجب ألا ننظر إلى svnlookclient.

using(SvnClient cl = new SvnClient())
{
  SvnLogArgs la = new SvnLogArgs();
  Collection<SvnLogEventArgs> col;
  la.Start = 1234;
  la.End = 4567;
  cl.GetLog(new Uri("http://svn.collab.net/repos/svn"), la, out col))
}

نصائح أخرى

لمعلوماتك، صنعت وظيفة C # بناء على استجابة بيرت. شكرا بيرت!

public static string GetLogMessage(string uri, int revision)
{
    string message = null;

    using (SvnClient cl = new SvnClient())
    {
        SvnLogArgs la = new SvnLogArgs();
        Collection<SvnLogEventArgs> col;
        la.Start = revision;
        la.End = revision;
        bool gotLog = cl.GetLog(new Uri(uri), la, out col);

        if (gotLog)
        {
            message = col[0].LogMessage;
        }
    }

    return message;
}

نعم لا، أعتقد أن لدي رمز لهذا، سأقوم بنشره لاحقا. sharpsvn لديه واجهة برمجة تطبيقات (IMHO) مربكة.

أعتقد أنك تريد .log (من Svnclient)، أو ما شابه ذلك، يمر في المراجعة بعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top