الجهاز الهضمي مقابل.Perforce- سيدخل اثنان من VCS ... سيغادر أحدهما [مغلق]

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

سؤال

لذلك أنا بصدد بيع GIT في العمل.أول شيء أحتاجه هو إقناع الجميع بأن الجهاز الهضمي أفضل فيما اعتادوا فعله بالفعل.نحن نستخدم حاليًا Perforce.أي شخص آخر يمر بعملية بيع مماثلة؟أي روابط / نصيحة جيدة؟

أحد المكاسب الكبيرة هو أنه يمكننا العمل معه منفصلاً عن الشبكة.فوز IMO آخر هو الطريقة التي يتم بها التعامل مع الإضافات/الخروج.المزيد من النقاط هي موضع ترحيب!لدينا أيضًا حوالي 10-20 مطورًا.

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

المحلول

يمر كود مصدر مترجم Perl 5 حاليًا بمرحلة التحويل من Perforce إلى git.ربما سام فيلان git-p4raw المستورد محل اهتمام.

على أية حال، أحد المكاسب الكبرى التي ستحققها على كل VCS المركزية ومعظم تلك الموزعة هو أيضًا أولي ومثير للاشمئزاز سرعة.لا يمكنك أن تتخيل كم هو متحرر أن يكون لديك تاريخ المشروع بأكمله في متناول يدك، مجرد أجزاء من أجزاء من الثانية، حتى تجربه.حتى إنشاء سجل التزام لتاريخ المشروع بأكمله والذي يتضمن فرقًا كاملاً لكل التزام يمكن قياسه بأجزاء من الثانية.Git سريع جدًا وستطير قبعتك.إن أنظمة VCS التي يتعين عليها السفر ذهابًا وإيابًا عبر الشبكة ليس لديها أي فرصة للمنافسة، ولا حتى عبر رابط Gigabit Ethernet.

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

لقد وجدت أن هذه الحقائق معًا تجعلني بطبيعة الحال أقوم بالعديد من الالتزامات الأكثر تركيزًا مما كانت عليه قبل استخدام git.وهذا بدوره لا يجعل سجلك أكثر فائدة بشكل عام فحسب، بل إنه مفيد بشكل خاص لأدوات القيمة المضافة مثل git bisect.

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

نصائح أخرى

أستخدم Perforce في العمل.أستخدم Git أيضًا لأنني ما زلت أرغب في شكل من أشكال التحكم في الإصدار عندما أعمل على التعليمات البرمجية ولا يمكنني الاتصال بالخادم.لا، التوفيق بين العمل دون اتصال بالإنترنت ليس هو نفسه.هذا هو المكان الذي وجدت فيه أن git ذو فائدة كبيرة:

  1. سرعة التفرع - يستغرق git بضع ثوانٍ على الأكثر.
  2. الصراعات - أدى الحل التلقائي لـ P4Merge إلى تدمير قيمة العمل لمدة أسبوع مرة واحدة.منذ ذلك الحين أفضل حل المشكلة يدويًا عند الدمج.عندما يسألني Git عن وجود تعارض، فهو في الواقع صراع.وفي بقية الوقت، يقوم git بحل الأمور بشكل صحيح وأوفر الكثير من الوقت.
  3. تتبع عمليات الدمج - إذا كان لديك فرع واحد يتلقى عمليات الدمج بشكل مستمر من فرعين آخرين، فأنت تعرف مدى صعوبة هذا الأمر بالضرورة.مع git، يتم تقليل الصداع لأن نتيجة الدمج في git هي في الواقع التزام جديد يعرف من هم أسلافه.
  4. الأذونات - لقد فقدت تتبع عدد المرات التي حاولت فيها العمل على ملف ولكن لم أستطع لأنه لم يتم سحبه في Perforce.إذا كنت تعمل مع XCode (أو أي محرر لا يحتوي على مكون إضافي قوي لـ Perforce SCM) دون اتصال بالإنترنت، فأنت تعرف مدى الإزعاج الذي يمكن أن يحدثه هذا.لا داعي للقلق بشأن ذلك مع Git.أقوم بإجراء تغييراتي.Git لا يمنعني ويتتبعهم في الخلفية.
  5. الحفاظ على الشجرة الرئيسية مرتبة - باستخدام git، يمكنني فرز التزاماتي وترتيب الكود بحيث يبدو السجل جميلًا ومرتبًا.لا شيء من هذا "التحقق من هذا الملف لأنه كان من المفترض أن يكون جزءًا من عملية تسجيل الوصول السابقة".أنا أمارس رياضة الإسكواش بهذه الطريقة، لأنها لا تساعد أحداً.
  6. التخزين - يجب أن يكون خادمك هو الإصدار 2010.1 أو أحدث لاستخدام أمر p4 shelve.
  7. إنشاء التصحيحات - من السهل القيام به في git.لا أعرف ما إذا كان ذلك ممكنًا في Perforce دون استخدام سطر الأوامر.
  8. تصحيحات البريد من واجهة المستخدم الرسومية - مرة أخرى، يفوز git هنا.
  9. مساحة القرص - بحكم الضرورة، كل فرع هو نسخة.وهذا يعني أنه إذا كانت الشجرة المصدر ضخمة، فسيتم استهلاك مساحة القرص لديك بسرعة.وهذا لا يشمل حتى المساحة الإضافية بمجرد البدء في البناء.لماذا حتى يكون هناك رابط بين الفروع ومساحة القرص؟باستخدام git، يمكن أن يكون لديك 100 فرع ولا يوجد سوى فرع واحد فقط في كل مرة.إذا كنت تريد على وجه التحديد العمل على نسختين في وقت واحد، فيمكنك الاستنساخ والقيام بعملك ثم التخلص من نسخة واحدة إذا أردت، دون أن تفقد أي شيء.
  10. إذا كنت تستخدم XCode4، فقد تم إسقاط الدعم بالضرورة وتم الآن دمج دعم git.إذا كنت تعمل عبر الأنظمة الأساسية كما أفعل، فهذا يهم كثيرًا.باستخدام Visual Studio، يمكنك استخدام ملحقات git.بحكم الضرورة، فهو سيئ بنفس القدر في كلا نظامي التشغيل.حسنًا، ربما المزيد عن نظام التشغيل Mac الآن مع ظهور XCode4 على الساحة.
  11. العثور على تسجيل الوصول الخاطئ (أو قواعد git bisect) - هل حاولت يومًا إجراء بحث ثنائي بحكم الضرورة لمعرفة مكان ظهور الخطأ؟تماما من المتاعب، نعم؟ويزداد الأمر تعقيدًا عندما يكون هناك تكاملات من الفروع الأخرى في المنتصف.لماذا؟لأنه لا يوجد أتمتة لمثل هذه المهام.تحتاج إلى كتابة الأداة الخاصة بك للتحدث معها بحكم الأمر، وعادةً لا يكون لديك الوقت.باستخدام git، يمكنك منحه نقاط البداية (النقطة "الجيدة" والنقطة "السيئة") ويقوم بأتمتة البحث نيابةً عنك.والأفضل من ذلك، إذا كان لديك برنامج نصي يمكنه أتمتة عملية الإنشاء والاختبار، فيمكنك ربط git بالبرنامج النصي وستتم عملية البحث عن تسجيل الوصول بالكامل تلقائيًا.هكذا ينبغي أن يكون الأمر.
  12. تتبع التغييرات عبر عوامل إعادة البناء - حاول تقسيم BigClass إلى SmallClass1 وSmallClass2.وفقًا للقوة، لم يعد BigClass موجودًا الآن وانضمت فئتان جديدتان (SmallClass1 وSmallClass2 إلى الشجرة المصدر).بالنسبة للقوة، لا توجد علاقة بين BigClass وSmallClass1 وSmallClass2.من ناحية أخرى، يتمتع Git بالذكاء الكافي ليعلم أن x% من BigClass موجود الآن في SmallClass1 وأن ​​y% من BigClass موجود في SmallClass2 وأن BigClass لم يعد موجودًا.الآن، من وجهة نظر شخص يقوم بمراجعة التغييرات عبر فروع متعددة، أخبرني عن النهج الذي قد تجده أكثر فائدة - Git's أو Perforce's.أنا شخصياً أفضل أسلوب Git لأنه يعكس بشكل أكثر دقة التغيير الفعلي في الكود.Git قادر على القيام بذلك لأنه يتتبع المحتوى داخل الملف وليس الملف نفسه.
  13. المركزية أو اللامركزية:جيت هو دفكس النظام في حين أن القوة مركزية.لا يمكن أن يكون VCS المركزي لا مركزيًا لاحقًا، ولكن يمكن أن يكون DVCS (خاصة git) مركزيًا.هناك العديد من المنتجات التي تضيف تحكمًا دقيقًا جدًا في الوصول إلى git، إذا كان هذا هو الشيء الذي تحتاجه الشركة.أنا شخصياً سأختار نظاماً يمنحني مرونة أكبر على المدى الطويل.
  14. تعيينات الفروع:إذا كنت تريد إجراء التفرع مباشرة في Perforce، فأنت بحاجة إلى إنشاء تعيين فرعي.هناك أسباب لذلك، لكنها مرتبطة بكيفية تصور بيرفورس للفرع.كمطور، أو كفريق، فهذا يعني ببساطة خطوة أخرى في سير العمل، والتي لا أعتبرها فعالة على الإطلاق.
  15. تقاسم العمل بين الفرق:مع Perforce، لا يمكنك تقسيم الإرسال.يعمل الفريق "أ" على الميزة "أ".الفريق "ب" في الميزة "ب".يعمل الفريق C على إصلاحات الأخطاء.الآن، يتعين على الفريقين A وB إصلاح مجموعة من الأخطاء من أجل تنفيذ ميزاتهما.الشيء الوحيد هو أنهم لم يكونوا منضبطين جدًا عند تنفيذ تغييراتهم (ربما لأنهم يستعجلون في الموعد النهائي) وبالتالي فإن "إصلاحات الأخطاء" الخاصة بهم هي أجزاء من عمليات إرسال أكبر تحتوي أيضًا على أشياء جديدة فيما يتعلق بالتحكم في الإصدار على الفروع المعنية.ومع ذلك، يقوم الفريق C الآن بإصدار نقطة ويرغب في الحصول على إصلاحات الأخطاء من الفرق الأخرى.إذا كانوا يستخدمون Git، فيمكن للفريق C اختيار التغييرات ذات الصلة للفرق الأخرى، وتقسيمها وأخذ ما يحتاجون إليه فقط دون القلق بشأن تقديم أي ميزات تم تنفيذها جزئيًا.باستخدام Perforce، يمكن لفريق C الحصول على الملفات المتأثرة، ولكن سيتعين عليه فصل التغييرات ذات الصلة باستخدام عملية يدوية أكثر بكثير.
  16. تغيير النظام الأساسي - إذا قررت ، لأي سبب من الأسباب في المستقبل ، تغيير النظام الأساسي الذي تختاره ، مع Perforce ، فأنت تحت رحمة Perforce.com وتوافر أدوات منصة تختارك.
  17. التغيير إلى محرك التحكم في المصدر المذهل في المستقبل - إذا قررت تغيير ما تستخدمه للتحكم في المصدر ، فإن استخراج سجل التحكم في المصدر الخاص بك من Perforce ونقله إلى النظام الجديد X سيكون كابوسًا ، لأنه مصدر مغلق وأفضل يمكنك القيام به هو التخمين - فقط Google for perforce للترحيل للتعرف على ما أتحدث عنه.على الأقل مع GIT ، المصدر المفتوح ، لذلك يلغي الكثير من التخمين المعني.

حسنا، هذا هو سنتي 2.دفاعًا عن Perforce، يجب أن أقول قواعد دعم العملاء الخاصة بهم وكذلك أداة Time Lapse View الخاصة بهم.لا أعرف كيفية الحصول على عرض بفاصل زمني باستخدام git.ولكن لتوفير الراحة والوقت، سأختار git في أي يوم.

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

كم عدد المطورين تتحدث عن تغيير انتهت؟

والسؤال الحقيقي هو - ما هو حول بالضرورة أنه لم يتم تلبية الاحتياجات الخاصة بالمؤسسة التي يمكن أن توفر بوابة؟ وعلى نحو مماثل، ما نقاط الضعف لا GIT وبالمقارنة مع بالضرورة؟ إذا لم تتمكن من الإجابة على هذا بنفسك ثم يسأل هنا لن يساعد. تحتاج لإيجاد حالة عمل لشركتك. (على سبيل المثال، ربما يكون ذلك مع انخفاض التكلفة الإجمالية للملكية (التي تشمل فقدان الإنتاجية للمرحلة التعلم المؤقت، وارتفاع تكاليف الادارة (في البداية على الأقل)، الخ.)

وأعتقد أنك في لصعبة - بالضرورة هو فكرة جيدة جدا في محاولة ليحل محل. ذلك هو عدم التفكير إذا كنت تحاول اقصاء PVCS أو ssafe.

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

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

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

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

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

ما هي ميزات Perforce التي يستخدمها الأشخاص؟

  • مساحات عمل متعددة على جهاز واحد
  • قوائم التغيير المرقمة
  • فروع المطور
  • التكامل مع IDE (Visual Studio، Eclipse، SlickEdit، ...)
  • العديد من المتغيرات البناء
  • مساحات العمل المركبة
  • دمج بعض الإصلاحات ولكن ليس غيرها
  • إلخ

أسأل لأنه إذا كان كل ما يفعله الأشخاص هو الحصول على البيانات ووضعها من سطر الأوامر، فإن git يغطي ذلك، وكذلك الحال بالنسبة لجميع RTS الأخرى.

جيثب نقدم الآن دورات تدريبية بوابة للشركات . Quoth بلوق موقعهم حيال ذلك :

<اقتباس فقرة>   

ولقد كنت وصولا الى الحرم الجامعي Google عددا من المرات في الاسابيع القليلة الماضية مما يساعد على تدريب أجهزة Android هناك في بوابة. لقد سئلت من قبل شون بيرس (تعلمون له من بوابة له والمجد ايجت / JGit - هو البطل الذي يتولى تبقي ادارة عندما جونيو هو خارج المدينة) ليأتي لمساعدته في تدريب مهندسي غوغل تعمل على ANDRIOD في < ب> الانتقال من بالضروره لبوابة ، لذلك الروبوت يمكن تقاسمها مع الجماهير. استطيع ان اقول لكم كنت أكثر من سعداء للقيام بذلك.

     

[...]

     

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

والألغام التركيز.

لقد كنت أستخدم Perforce لفترة طويلة وبدأت مؤخرًا في استخدام GIT.وهذا هو رأيي "الموضوعي":

ميزات التنفيذ:

  1. يبدو أن أدوات واجهة المستخدم الرسومية أكثر ثراءً بالميزات (على سبيل المثال.عرض الفاصل الزمني، الرسم البياني للمراجعة)
  2. السرعة عند المزامنة للمراجعة الرئيسية (لا يوجد حمل لنقل السجل بالكامل)
  3. يعد تكامل Eclipse/Visual Studio أمرًا رائعًا حقًا
  4. يمكنك تطوير ميزات متعددة في فرع واحد لكل قائمة تغيير (ما زلت غير متأكد بنسبة 100٪ مما إذا كانت هذه ميزة على GIT)
  5. يمكنك "التجسس" على ما يفعله المطورون الآخرون - أي نوع الملفات التي قاموا بسحبها.

مميزات الجهاز الهضمي:

  1. حصلت على انطباعات بأن سطر أوامر GIT أبسط بكثير من Perforce (init/clone، add، Commit.لا يوجد تكوين لمساحات العمل المعقدة)
  2. السرعة عند الوصول إلى سجل المشروع بعد الخروج (يأتي على حساب نسخ السجل بالكامل عند المزامنة)
  3. وضع عدم الاتصال (لن يشتكي المطورون من أن خادم P4 الذي لا يمكن الوصول إليه سيمنعهم من البرمجة)
  4. إنشاء فروع جديدة أسرع بكثير
  5. لا يحتاج خادم GIT "الرئيسي" إلى الكثير من سعة التخزين التي تبلغ تيرابايت، لأن كل مطور يمكن أن يكون لديه صندوق حماية محلي خاص به
  6. GIT مفتوح المصدر - لا توجد رسوم ترخيص
  7. إذا كانت شركتك تساهم أيضًا في مشاريع مفتوحة المصدر، فإن مشاركة التصحيحات تكون أسهل بكثير مع GIT

بشكل عام بالنسبة للمشاريع مفتوحة المصدر/الموزعة، أوصي دائمًا بـ GIT، لأنه يشبه تطبيق P2P ويمكن للجميع المشاركة في التطوير.على سبيل المثال، أتذكر أنه عندما كنت أقوم بالتطوير عن بعد باستخدام Perforce، كنت أقوم بمزامنة مشاريع بسعة 4 جيجابايت عبر رابط بسرعة 1 ميجابت في الثانية مرة واحدة في الأسبوع.لقد تم إهدار الكثير من الوقت ببساطة بسبب ذلك.كنا بحاجة أيضًا إلى إعداد VPN للقيام بذلك.

إذا كانت لديك شركة صغيرة وكان خادم P4 يعمل دائمًا، فأنا أقول إن Perforce يعد أيضًا خيارًا جيدًا جدًا.

ولقد تم استخدام بوابة لبعض الوقت، في الآونة الأخيرة طوة خادمنا جيت وتحطمت، ونحن لا يمكن أن تعود مرة أخرى إلى أحدث دولة. استطعنا أن نعود إلى أيام الدولة القديمة. عندما كان خادم النسخ الاحتياطي. الجميع في الفريق انسحب / دفع التغييرات الخاصة بهم وفويلا، والخادم هو العودة إلى الحالة الراهنة.

ووفارق واحد مهم بين بالضروره وبوابة (وأكثرها شيوعا المذكورة) هو التعامل مع كل منهما من الملفات الثنائية ضخمة.

ومثل، على سبيل المثال، في هذا بلوق من موظف في شركة تطوير لعبة فيديو: <لأ href = "http://corearchitecture.blogspot.com/2011/09/git-vs-perforce-from-game- development.html "يختلط =" نوفولو "> http://corearchitecture.blogspot.com/2011/09/git-vs-perforce-from-game-development.html

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

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

و، على أية حال، في النهاية، قهرا وبوابة من المنتجات المختلفة. وقد تم تصميم بوابة لتكون حصرا على VCS، وأنه لا هذا أفضل بكثير من بالضروره (في أن لديها المزيد من الميزات، التي عادة ما تكون أسهل للاستخدام، على وجه الخصوص، على حد قول آخر، المتفرعة في بالضروره هو مثل أداء القلب المفتوح عملية جراحية، وينبغي أن يتم ذلك إلا من خلال خبراء: P) ( http://stevehanov.ca/ بلوق / index.php؟ ID = 50 )

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

وأخيرا: بوابة كونه مفتوح المصدر وأكثر مرونة لالتمهيد، فإنه لن يكون من الصعب جدا على التصحيح بوابة لافراغ عمليات هامة لخادم مركزي، تشغيل أكوام من أجهزة باهظة الثمن

وأعتقد أن الشيء الوحيد الذي أعرفه GIT يفوز عليه هو انها القدرة على "الحفاظ على خط النهايات" على كافة الملفات، في حين بالضرورة يبدو أن الإصرار على ترجمتها إلى إما يونكس، دوس / ويندوز أو شكل MacOS9 ( "\ ن" "\ ص \ ن" أو "\ ص).

وهذا هو الألم الحقيقي إذا كنت تكتب نصوص يونكس في بيئة ويندوز، أو بيئة OS مختلطة. انها ليست حتى من الممكن تعيين القاعدة على أساس لكل ملف التمديد. على سبيل المثال، فإنه تحويل .sh، .bash، ملفات .unix إلى تنسيق يونيكس، وتحويل .ccp، الخفافيش أو كوم الملفات إلى تنسيق دوس / ويندوز.

في GIT (لست متأكدا إذا كان هذا هو الافتراضي، وهو خيار أو الخيار الوحيد) يمكنك إعداده ل"الحفاظ على خط النهايات". وهذا يعني، يمكنك تغيير يدويا نهايات خط ملف، ومن ثم GIT سيترك هذا الشكل على ما هو عليه. هذا يبدو لي مثل الطريقة المثلى لفعل الأشياء، وأنا لا أفهم لماذا هذا ليس خيارا مع بالضروره.

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

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

وهذه ليست سوى شيء وأعتقد أن يعطي GIT ميزة كبيرة، والتي لا أعتقد وقد ذكرت I أعلاه.

وتحرير: وبعد أن تم استخدام بالضروره لفترة أطول قليلا، وأود أن أضيف زوجين آخر التعليقات:

وA) شيء أفتقد حقا في بالضروره هو واضح والمثال فرق، بما في ذلك الملفات التي تم تغييرها أو إزالتها، وأضاف. هذا هو متاح في GIT مع الأمر git diff، ولكن في بالضروره، الملفات يجب أن يتم التحقق من قبل تسجل التغييرات الخاصة بهم، وبينما قد يكون لديك المحررين الرئيسي الخاص بك (مثل الكسوف) التي أنشئت لتحقق الملفات تلقائيا عند تحريرها، قد أحيانا تحرير الملفات بطرق أخرى (المفكرة، أوامر يونكس، الخ). ولا يبدو الملفات الجديدة التي ستضاف تلقائيا في كل شيء، حتى باستخدام الكسوف وp4eclipse، والتي يمكن أن تكون مزعجة إلى حد ما. حتى لتجد كل التغييرات، لديك لتشغيل "الفرق ضد ..." على مساحة العمل بأكمله، والتي قبل كل شيء يستغرق بعض الوقت لتشغيل، وتشمل ثانيا كل نوع من الأشياء غير ذات صلة إلا إذا قمت بإعداد قوائم الاستبعاد معقدة للغاية، الذي يقودني إلى النقطة التالية.

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

-//Server/mainline/.../target/...   //Svend_Hansen_Server/.../target/...

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

-//Server/mainline/projectA/target/...  //Svend_Hansen_Server/projectA/target/...
-//Server/mainline/projectB/target/...  //Svend_Hansen_Server/projectB/target/...
...

وخطوط مماثلة للمجلدات بن ل، .classpath وملفات .projet وأكثر من ذلك.

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

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

واعتقد ان ذلك يتوقف على المشروع حقا، وبعضها أكثر ملاءمة نحو VCS خدمة العملاء، وغيرها towads زعت واحد.

وإليك ما أنا لا أحب حول بوابة:

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

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

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

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

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

وهناك مثال مماثل من عدم كفاية بوابة هو gitolite (وسلف والتي على ما يبدو لم تعمل بشكل جيد جدا.) يصف Gitolite بعملها كما تخفيف نشر الخادم بوابة. مرة أخرى، فإن مجرد وجود هذا الشيء يثبت أن بوابة ليست الخادم، أي أكثر مما هو عليه عميل. ما هو أكثر من ذلك، ولن تكون أبدا، لأنه إذا نمت إما أنه سيكون خيانة انها المبادئ التأسيسية.

وحتى إذا لم نؤمن في شيء الموزعة، بوابة سيظل في حالة من الفوضى. ما، لإنستاالامتحانات التنافسية الوطنية، هو الفرع؟ يقولون أنك ضمنيا جعل فرع في كل مرة كنت استنساخ مستودع، ولكن هذا لا يمكن أن يكون نفس الشيء فرع في مستودع واحد. ذلك أن اثنين على الأقل من الأشياء المختلفة التي يجري يشار إلى الفروع. ولكن بعد ذلك، يمكنك أيضا الترجيع في الريبو ومجرد بداية التحرير. غير أن مثل النوع الثاني من فرع، أو شيئا مختلفا مرة أخرى؟ ربما يعتمد على ما نوع من الريبو كنت قد حصلت - أوه نعم - على ما يبدو الريبو ليس مفهوم واضح جدا أيضا. هناك تلك العادية وتلك العارية. لا يمكنك دفع إلى واحد عادي لأن الجزء العاري قد تحصل متزامنة مع شجرة مصدره. ولكن لا يمكنك cvsimport لالعارية واحدة كوس أنها لم تفكر في ذلك. ولذلك عليك أن cvsimport إلى واحد عادي، استنساخ أن لالعارية واحد الذي ضرب المطورين، وcvsexport أن لعمل نسخة السير الذاتية التي ما زالت تحتاج الى أن دققت في السير الذاتية. الذي يمكن ازعجت؟ أين كل هذه التعقيدات تأتي من؟ من فكرة توزيع نفسها. I تخلت gitolite في النهاية لأنه فرض أكثر من هذه القيود على لي.

يقول

بوابة أن المتفرعة يجب أن تكون خفيفة، ولكن العديد من الشركات لديها بالفعل مشكلة فرع المارقة خطيرة جدا كنت قد يعتقد أن المتفرعة يجب أن يكون قرارا خطيرا مع الشرطة صارمة. هذا هو المكان بالضرورة يضيء حقا ...

في بالضرورة أنك نادرا ما تحتاج فروع لأنك تستطيع أن تتحكم changesets بطريقة رشيقة جدا. على سبيل المثال، سير العمل المعتاد هو أن مزامنة إلى الإصدار الأخير جيد معروف على الخط الرئيسي، ثم كتابة ميزة الخاص بك. كلما حاولت تعديل ملف، ويحصل أضاف فرق من هذا الملف لبك "changeset الافتراضي". عند محاولة للتحقق في changeset، فإنه يحاول تلقائيا إلى دمج الأخبار من الخط الرئيسي إلى changeset الخاص بك (إعادة تحديد فعالية ذلك) ثم ارتكب. يتم فرض هذا العمل حتى دون الحاجة لك لفهمه. وبالتالي رئيسي يجمع تاريخ من التغييرات التي يمكنك بسهولة تامة الكرز اختيار طريقك في وقت لاحق. على سبيل المثال، افترض أنك تريد أن تعود قديمة، مثلا، واحد من قبل واحد قبل الماضي. مزامنة لحظة قبل التغيير المخالف، بمناسبة الملفات المتأثرة كجزء من changeset، مزامنة لحظة بعد والاندماج مع "دائما الألغام". (كان هناك شيء مثير للاهتمام للغاية هناك: المزامنة لا يعني وجود نفس الشيء - إذا كان ملف للتحرير (أي في changeset النشطة) لن يكون مضروب من قبل المزامنة ولكن وضعت بسبب لحل) والآن لديك على قائمة تغييرات التي يبطل المخالف واحد. دمج في الأخبار لاحق وكان لديك قائمة تغييرات التي يمكنك صوت نزول المطر على رأس رئيسي ليكون لها الأثر المطلوب. في أي لحظة أننا لم إعادة كتابة أي تاريخ.

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

وأعتقد أنه سيكون من الممكن نظريا أن تفعل شيئا من هذا القبيل في بوابة، ولكن بوابة يجعل عمليا كل ما هو ممكن وليس مؤكدا سير العمل نحن نوافق. نموذج مركزي حفنة من التبسيط صالحة النسبية للنموذج توزع وهو تعميم صالح. انها overgeneralised بحيث يتوقع أساسا لك لتنفيذ التحكم بالمصادر على أعلى من ذلك، كما يفعل الريبو.

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

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

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

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

وأيضا، لماذا تعمل فصل مهم جدا على أي حال؟ فقط حتى يمكن للشخص أن يعمل على القطار؟ هذا عن المكان الوحيد في هذه الأيام لا يمكنك الحصول على اتصال لاسلكي. وحتى معظم القطارات لها واي فاي لائق.

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