سؤال

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

ماذا تفعل عندما تريد تقليص مستودع SVN المركزي؟

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

مثال 2: لدي 10 إصدارات من 10 مكتبات جهة خارجية كبيرة في المستودع، لكنني فقط استخدم أحدث الإصدارات.

مثال 3: لقد فحصت بطريق الخطأ في المعلومات الحساسة (كما اقترح من قبل يوحنا).

مثال 4.: قمت بفحصه بطريق الخطأ في بعض الملفات الكبيرة التي لم يكن من المفترض أن يتم وضعها في المستودع.

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

المحلول

هناك كمية عادلة من مناقشة svn obliterate في تذكرة المشكلة في موقع التبرع Apache, ، معظمها ينتهي حوالي عام 2008. يبدو أن هناك اتفاقية عامة على أنها قدرة جيدة على أن يكون لديك، على الرغم من أن استخدامه يجب أن يكون نادرا.

هناك سببان رئيسيان تريده.

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

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

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

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

نصائح أخرى

ينتهك معنى السيطرة المصدر.
التحكم المصدر هو كل شيء عن القدرة على استعادة حالة سابقة. إذا قمت بحذف ملف دائم فلن تتمكن من ذلك.

otoh أنا لا أعرف vss لذلك ربما أكون قد أسيء فهم "حذف بشكل دائم"

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

يحتوي Fogbugz على نفس السلوك بالضبط، وفي حالتهما بالكامل من خلال تصميم أؤمن به، وحماية المستخدمين من أنفسهم.

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

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

نقلا عن التخريب طمس، الميزة المنسية, ، هناك ثلاثة مكونات على السؤال، مشكلة, ، ال السبب و ال المحلول. وبعد منذ أن بدأت بالسؤال إلى الحل، سأبدأ بهذا.

المحلول

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

كان هناك جهد صغير (اتبع الخيط) على فريق SVN للحصول على ميزة طمس هناك بعد عام 2008، لكن الجهد توفي وفاة صامتة.

المشكلة

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

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

من تأهيل الدخول:

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

السبب

المشكلة هي أنه في الأصل تم رفض ميزة طمس كما أنه لم يكن مطابقا بمبدأ التحكم في الإصدار الحقيقي.

مرة أخرى من تأهيل الدخول:

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

ومع ذلك

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

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

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

أتساءل ما هي الأسباب التي تريدها هذه الميزة:

  • مساحة القرص؟ من الصعب تصديق النظر في سعر مساحة القرص
  • وأخذ كلمة المرور للتحكم في الإصدار؟ حسنا سوف يعلمك. اذهب وتغيير كلمة المرور
  • سرعة المستودع؟ لا يبدو ذلك، ولكن إذا كنت أفكر في نظام مختلف تماما مع أداء أفضل من المفترض.

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

هناك بعض البرمجة النصية التي تساعدك على طمس البيانات. يتبع هذه قائمة الموضوعات البريدية لمزيد من المعلومات.

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

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

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

طمس ليس سمة أساسية من التخريب، لأنه يكسر بالفعل المبادئ الأساسية لعنصر تحكم الإصدار (وهو: تسجيل كل التاريخ).

وهي ليست ميزة أساسية لأن هناك حداثة للحصول على هذا القيام به على أي حال (باستخدام Svnadmin والتصفية).

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

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

طمس Svnadmin هو أحد أكثر الميزات المطلوبة، كما اعترف ديف أخيرا أنه يجب أن يكون موجودا (أخيرا! بعد 8 سنوات !!!). ودعاية ذلك غير موجودة، يطارد المستخدمين بعيدا عن SVN.

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

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

ما أقوم به - لا تستخدم التخريب. آسف.

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

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