هل هناك طريقة لإزالة تاريخ ملف واحد في الزئبقي?

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

  •  06-07-2019
  •  | 
  •  

سؤال

أعتقد أنني عرفت الجواب على ذلك ولكن فكرت أن تسأل على أي حال:

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

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

المحلول

لا, لا يمكنك.قراءة التغييرات التي ينبغي أبدا قسم الزئبقي الكتاب الأحمر عن ذلك ؛ ولا سيما ماذا عن حساسية التغييرات التي الهرب القسم الفرعي الذي يحتوي على هذه الفقرة:

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

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

نصائح أخرى

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

إذا كان هذا هو موافق لك (الداخلية مستودع في الشركة) ، ثم نلقي نظرة على تحويل امتداد.يمكن القيام به hg → hg التحويلات و --filemap الحجة التي يمكن استخدامها استبعاد ملفات, من بين أمور أخرى.

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

وقال لقد تابعت تحرير التاريخ تسلسل وصفها على الزئبقي ويكي لإزالة الملف من أحد المستودعات.هذا التسلسل يفترض أن تنقيح 1301:5200a5a10d8b إضافة الملف path/to/badfile.cfg, الذي لا يتغير في أي تنقيح لاحق:

  1. تمكين MQ التمديد في .hgrc:

    [extensions]
    mq =
    
  2. سحب التغييرات الأخيرة من المنبع.

    hg pull
    
  3. استيراد كل شيء من إضافة ملف فصاعدا في MQ:

    hg qimport -r 1301:tip
    hg qpop -a
    
  4. إزالة الملف من ارتكاب هذا إضافته.

    hg qpush 1301.diff
    hg forget path/to/badfile.cfg
    hg qrefresh
    
  5. تحويل بقع جديدة الزئبقي التنقيحات.

    hg qpush -a
    hg qfinish -a
    
  6. دفع التنقيحات الجديدة في المنبع.

    hg push -f
    
  7. على المنبع مستودع و كل نسخة أخرى ، وإزالة المراجعات القديمة.

    hg strip 5200a5a10d8b
    

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

حظا سعيدا.

فإنه يمكن القيام به في أقل من 10 دقيقة.في مستودع واحد ، على الرغم من أن هناك عواقب.

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

Make sure all your teammates have pushed their local changes to the central repo (if any)
Backup your repository
Create a "map.txt" file:

# this filemap is used to exclude specific files
exclude "subdir/filename1.ext"
exclude "subdir/filename2.ext"
exclude "subdir2"

Run this command:
hg convert --filemap map.txt c:/oldrepo c:/newrepo
NOTE: You have to use "forward-slash" in paths, even on windows.
Wait and be patient
Now you have a new repo at c:\newrepo but without the files

فضلا عن العواقب...

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

وزرع الزئبق، ثم قطاع الزئبق

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