بوابة:دمج القطاعين العام والخاص فروع في حين في حين حفظ بعض الملفات سليمة في كل الفروع

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

  •  05-07-2019
  •  | 
  •  

سؤال

لقد قرأت بعض بوابة الأسئلة هنا, ولكن لا يمكن أن تجد إجابة على هذا واحد:

لدي العامة و الخاصة الفروع حيث أريد أن تسمح بعض الملفات تتباعد.

تلك هي ملفات التكوين مع كلمات المرور المحلية التخصيصات.

أنا لا أريد أن تكون قادرة على دمج فروع في كلا الاتجاهين:من الخاص إلى العام مرة أخرى, ولكن أنا لا أريد أن يكون من أي وقت مضى تلك الملفات المدمجة تلقائيا.

هل هناك طريقة لانشاء بوابة بهذه الطريقة ؟ أحب أن تجد الآلي الحل :) - حيث أن دمج يمكن القيام به على النحو المعتاد.


تحرير: هنا الحل التي عملت بالنسبة لي (شكرا VonC المشورة على gitattribute)

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

.gitattributes (المسار مع git إذا كنت ترغب في مشاركة هذا) أو .بوابة/معلومات/سمات:

file1      merge=keepmine
path/file2     merge=keepmine

keepmine هو اسمه دمج المخصصة مدير هذا مجرد فعل لا شيء الأوامر تسمى بدلا من الداخلية دمج السائق على اختيار الملفات التي يتم إعداد أدناه

عند دمج من خاصة إلى عامة فرع وعادة ما تفعل git merge --squash private.بهذه الطريقة خاصة التعديلات لن ندخل في بوابة التاريخ على فرع من العام.

.بوابة/config:

#public repository
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = <public repo git url> 

#private repository
#has to set up with git init and populated with the initial commit to branch mybranch
[remote "private"]
    push = +:
    url = /path/to/local/private/repo 
[merge "keepmine"]
    name = dont_merge_selected_files
    driver = echo %O %A %B 
[branch "master"]
    remote = origin
    merge = refs/heads/master 

#private branch settings
[branch "mybranch"]
    remote = private
    merge = refs/heads/mybranch

إذا كان هناك وسيلة لتحسين هذه يرجى التعليق

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

المحلول

أن تكون على الجانب الآمن ، يمكنك إضافة git attribute (انظر هنا على سبيل المثال) لتلك الملفات الخاصة.

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

نصائح أخرى

طريقة واحدة للقيام بذلك هي مع git rebase.عن طريق الحفاظ على الخاص بك تغييرات قليلة يرتكب قبالة نهاية الخاص بك master, يمكنك ارتكاب العامة الأشياء master فرع (أو أيا كان اخترت العمل الخاص بك الغصن) ثم ريبس الخاصة فرع ضد سيد كلما كنت ترغب في تحديث.

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

هذا فقط يبدو أن العمل إذا كان هناك دمج الصراعات الكشف عنها.دمج ذهابا وإيابا بين فروع الملف لا تحصل على الكتابة.ما لم يقع في شيء من الخطأ.طبعا هذا في windows msysgit بوابة النسخة 1.6.5.1.1367.

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

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