كيفية جعل التخريب (أو أي برنامج) أداء ارتكابها دورية؟

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

  •  09-09-2019
  •  | 
  •  

سؤال

أريد تكوين جهاز الكمبيوتر الخاص بي بحيث أقول كل نصف ساعة يتم طرده تلقائيا البرنامج الذي أعمل عليه. أنا أستخدم مستودع SVN حتى لو كان مجرد برنامج نصي يركض "SVN CI" كل 30 دقيقة سيكون على ما يرام. المشكلة هي أنني لا أعرف كيف أفعل ذلك.

هل يمكن لشخص ما أخبرني، أو توجهني إلى شيء ما، من شأنه أن يسمح لي بالحصول على هذه الأشياء الدورية التي تعمل؟

شكرا مقدما.

تحرير: آسف يبدو أنني كنت أخلك الناس عن سبب رغبتي في القيام بذلك. السبب الوحيد الذي أريد القيام بذلك هو أن محاضر من الألغام يريد منا أن نعرف كيف يتطور رمزنا بمرور الوقت، واعتقدت أنه سيكون فكرة رائعة استخدام SVN لهذا الغرض. لا يهم إذا كان آخر ارتكاب يعمل أم لا. يجب عليك فقط إظهار التغييرات التي أجريتها على الرمز بمرور الوقت.

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

المحلول

لن قذر نظام التحكم الخاص بك مع هذه السلسلة من ارتكاب تلقائي. لكنني أتفق مع فكرة استخدام نظام التحكم في التحكم لتوفير هذه المعلومات.

بعد ذلك، اقتراحي هو: استخدم مستودع للبرنامج الخاص بك وآخر آخر لتخزين ارتكاب تلقائي. عند الانتهاء من العمل، قم بدمج جميع الالتمامات التلقائية في المستودع الرئيسي في الالتزام المنطقي واحد فقط.

مع git، سأفعل هذا:

  1. ريبو "فو": المستودع الرئيسي
    1. يرجع / رؤساء / ...: موقع فروع التطوير الخاصة بك
    2. Refs / Stessions / ...: موقع عملك مع ارتكاب قذرة.
  2. نسخة عمل الخاصة بك:
    1. "جيت في الأعمار"
    2. "جيت عن بعد إضافة فو بوابة: // فو / ...؛ جبن جلب فو"
  3. قم بإنشاء الفرع: "GIT Checkout-bar Foo / Master"
  4. علامة بداية الفرع: "Git Tag Barbegin"
  5. قم بتنشيط البرنامج النصي: "بينما صحيح؛ add -a git؛ git comment -m 'autocommit'؛ القيام به"
  6. لن أستخدم وظيفة Cron، حتى تتمكن من تنشيط / إلغاء تنشيط AutoCommits بسهولة.
  7. هل وظيفتك
  8. بعد القيام به عملك، قم بإلغاء تنشيط البرنامج النصي
  9. ارتكاب التغييرات المعلقة
  10. الآن، لديك الكثير من الارتمارات التلقائية في شريط الفرع، وقد وضعت وضع علامة على الالتزام الأولي للفرع مع Barbegin
  11. نشر ارتكاب تلقائي الخاص بك:
    1. "جيت العلامة باريندر"
    2. "Git Push Foo Barbegin: Refs / Stessions / معرف المستخدم الخاص بك / معرف الجلسة / بدء"
    3. "Git Push Foo Barend: Refs / Stations / معرف المستخدم الخاص بك / معرف الجلسة / نهاية"
  12. الآن، لقد نشرت عملك ومحاضرك قد الوصول إليه
  13. لتحديث مستودع Foo الخاص بك:
    1. "git rebase - أنا - barbegin barbegin" والمضي قدما كما هو موضح هنا
    2. وأود أن يرتكب كل شيء: "في النهاية، يمكن أن يكون هناك واحد فقط".
    3. "Git Push Foo Bar: ماجستير" # سيتم دفع ارتكاب واحد فقط
  14. تنظيف:
    1. "git tag -d barbegin"
    2. "Git Tag -d Barend"
    3. "فرع جيت -d بار"

بعد كل هذا، أعتقد أنه لا يجوز جمع معلومات مفيدة مع هذا النوع من البيانات. لذلك، سأحاول تجنب سير العمل هذا. ولكن إذا كان هناك حاجة حقا، سأفعل بهذه الطريقة.

نصائح أخرى

على عكس الرأي الشعبي الواضح، أعتقد أن هذا هو استخدام كبير من SVN، في سياق المهمة.

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

إذا كنت تستخدم Ubuntu، فقم بتشغيل البرنامج النصي BASH هذا من وحدة التحكم المنفصلة إلى الشخص الذي تعمل عليه.

#!/bin/bash
while [ 1 ]
do
        # Do the commit
        svn ci --message "Automated commit" ~/yourworkingcopy

        # Wait until next commit time
        sleep 1800
done

يمكنك تجربة وظيفة Cron التي تعمل على تشغيل برنامج نصي شل. ما نظام التشغيل الذي أنت عليه؟

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

لا أعتقد أن الإعداد يرتكب على جدول زمني هو فكرة جيدة بشكل خاص. خاصة إذا بدأت في الدخول في الاختبار والتكامل المستمر. سوف يرتكب الالتزام على فترات مجموعة كسر المبنى لأنه لا يوجد ضمان ستكتمل أن تكون قد أكملت التغييرات في الإطار الزمني.

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

ممكن تماما مع جميع النكهات من التصنيع وأنا أعلم أن Visual Studio لديه أحداث بناء قبل النشر والمنشر التي يمكن تعيينها لفعل شيء من هذا القبيل. لذلك أنا متأكد من أن معظم المعالم العصرية يمكن أن تتعامل مع هذا.

كإذن خاص لهذه المشكلة على وجه الخصوص:
حرك خطاف الالتزام إلى بداية العملية حتى تتمكن من تتبع عند فوضى Royally أيضا وكيف تأتي لإصلاح الأخطاء.

أود استخدام التخريب، لكنني سأدخل بدلا من ذلك عادة العمل على تغييرات واحدة، ويزبول تلك الموجودة في مستودع.

بهذه الطريقة المحاضر، إذا أراد ذلك، يمكن أن ننظر إلى ليس فقط ماذا او ما تغيرت، ولكن لماذا تغيرت. سيكون هذا أكثر فائدة وأتتصور.

إذا كنت تعمل على نكهة UNIX، ففكر في إنشاء كرون وظيفة لتشغيل الأوامر في فاصل منتظم.

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