أفضل استراتيجية الكتابة السنانير التخريب في ويندوز [مغلقة]

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

  •  08-06-2019
  •  | 
  •  

سؤال

ما هو أفضل نهج الكتابة السنانير بالنسبة التخريب في ويندوز?بقدر ما أعرف, فقط الملفات القابلة للتنفيذ التي يمكن استخدامها.فما هو الخيار الأفضل ؟

  • عادي الملفات الدفعية (محدودة جدا ولكن ربما موافق جدا حلول بسيطة)
  • مخصص تجميع التطبيقات القابلة للتنفيذ (مطرقة لكسر الصدفة؟)
  • بعض المختلطة الأخرى خيار (مثل ملف دفعي تشغيل البرنامج النصي Powershell)
هل كانت مفيدة؟

المحلول

قضيت عدة أيام ممتنعة تماما عن هذا السؤال.هناك طرف ثالث المنتجات المتاحة والكثير من PERL و البرامج النصية بيثون ولكن أردت شيء بسيط و لغة كنت على دراية حتى انتهى الأمر مجرد كتابة السنانير في C# وحدة التحكم التطبيق.هو مستقيم جدا إلى الأمام:

public void Main(string[] args)
{
  string repositories = args[0];
  string transaction = args[1];

  var processStartInfo = new ProcessStartInfo
                           {
                             FileName = "svnlook.exe",
                             UseShellExecute = false,
                             CreateNoWindow = true,
                             RedirectStandardOutput = true,
                             RedirectStandardError = true,
                             Arguments = String.Format("log -t \"{0}\" \"{1}\"", transaction, repositories)
                           };

  var p = Process.Start(processStartInfo);
  var s = p.StandardOutput.ReadToEnd();
  p.WaitForExit();

  if (s == string.Empty)
  {
    Console.Error.WriteLine("Message must be provided");
    Environment.Exit(1);
  }

  Environment.Exit(0);
}

ثم يمكنك استدعاء هذا على ما قبل ارتكاب بإضافة ما قبل الالتزام.cmd الملف إلى مجلد السنانير من الريبو مع السطر التالي:

[path]\PreCommit.exe %1 %2

كنت قد تنظر في هذا مبالغة ولكن في نهاية المطاف انها فقط بضع دقائق من الترميز.ما هو أكثر من ذلك, يمكنك الحصول على ميزة .صافي اللغة الجناح الذي IMHO هو أفضل بكثير من البدائل.سوف توسيع السنانير بها بشكل كبير و كتابة الاختبارات المناسبة ضدهم وكذلك بت من الصعب أن تفعل هذا مع دوس ملف دفعي!

راجع للشغل, وقد رمز مقتبس من هذا المنصب.

نصائح أخرى

لدينا الاحتياجات المعقدة مثل:

  1. معينة فقط يمكن للمستخدمين إنشاء مجلدات في أجزاء من SVN شجرة, ولكن الجميع يمكن تحرير الملفات هناك
  2. معينة امتداد الملف لا يمكن أن تحتوي على نص معين في الملف
  3. معينة امتداد الملف لا يمكن تخزينها في مجموعة فرعية من الدلائل
  4. فضلا عن العديد من أبسط منها مثل, يجب أن يكون ارتكاب التعليق
  5. الانحدار قابلة للاختبار عن طريق تشغيل جديدة هوك ضد كل السابق إس يرتكب

#5 ضخمة بالنسبة لنا, ليس هناك طريقة أفضل من أن تعرف أنك لن كسر يرتكب تتحرك إلى الأمام بدلا من أن تكون قادرة على دفع السابقة يرتكب خلال ربط جديد.صنع هوك نفهم أن 1234 تم تنقيح و 1234-1 كانت الصفقة و جعل الحجة المناسبة التغييرات عند استدعاء svnlook ، إلخ.كان أفضل قرار قدمنا خلال هذه العملية.

بالنسبة لنا الجوز كبيرة بما فيه الكفاية الكاملة وحدة قابلة للاختبار ، والانحدار قابلة للاختبار, C# وحدة exe أكثر من معنى.لدينا ملفات التكوين التي تغذي دليل القيود ، تحليل القائمة httpd_authz الملف للحصول على "شرف" المستخدمين ، إلخ.نحن قد لا تعمل على ويندوز مع .صافي تطوير قوة العمل, ربما كنت قد كتبت كل شيء في بيثون ، ولكن لأن الآخرين قد تحتاج إلى دعم في المستقبل ذهبت .صافي أكثر .BAT, .VBS, Powershell سخف.

شخصيا أعتقد Powershell يختلف ما يكفي من .صافي أن تكون مجدية في الغالب مثل "البرمجة" اللغة.من الجيد إذا كان فقط cmd خط دعم المنتج يأتي عن طريق PS (Exchange, Windows 2 ك 8) ، الخ.ولكن إذا كان كل ما تريد القيام به هو تحليل بعض النصوص أو الوصول العادية .صافي الكائنات PS فقط يضيف مجنون بناء الجملة الغبية الأمن الستار الحديدي إلى ما يمكن أن يكون وسيلة سريعة وسهلة قليلا .صافي التطبيق.

تحقق CaptainHook, "البرنامج المساعد بسيطة إطار الكتابة التخريب باستخدام خطاطيف .صافي".

اعتمادا على تعقيد كل حالة مختلفة ، إذا أنا فقط مجرد نقل الملفات من مكان سأكتب سريعة ملف دفعي.إذا كنت تريد أن تفعل شيئا أكثر تعقيدا سوء عادة فقط تخطي البرمجة جزء وكتابة سريعة c# البرنامج التي يمكن التعامل معها.

السؤال هو هل وضعت تلك c# برنامج إس ويكون ذلك إصدار :)

تحرير: فوائد مخصص c# التطبيق هو أنه لا يمكن إعادة استخدام أجزاء التعليمات البرمجية لإنشاء السنانير الجديدة في وقت لاحق, بما في ذلك بسيط إخراج سجل أنا خلقت للتعامل مع ربط تسجيل الدخول.

لقد كتبت السنانير في بيثون على ويندوز لأن هناك الكثير من الأمثلة على الشبكة (عادة لينكس ولكن الاختلافات الصغيرة).ونحن أيضا استخدام تراك متكاملة مع SVN وهناك تراك API يمكن الوصول إليها عن طريق الثعبان الذي يتيح لنا تلقائيا إنشاء/تعديل البند تذاكر من SVN ربط البرامج النصية.

إذا كان لديك php قابل للتنفيذ مع مساعدة بسيطة php فئة قد تكتب ربط سكربت في بي كما هو مبين هنا http://www.devhands.com/2010/01/subversion-hook-php-framework-in/

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