سؤال

لدي مشروع يتم التحكم في مصدره باستخدام Subversion وVisualSVN.نظرًا لاختلاف إصدار web.config على الخادم وأجهزة كمبيوتر المطورين، أريد أن يظل الملف على أجهزة الكمبيوتر ولكن يتم تجاهله بواسطة Subversion.أضفته إلى svn:ignore ولكنه لا يزال قائمًا (ولا يزال به علامة تعجب حمراء أيضًا لأننا لا نلتزم به).

كيف يمكنني إزالته من Subversion بأمان دون حذفه من نظام الملفات

شكرا يا أدين

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

المحلول

سيكون عليك القيام بكل من عمليتي الإزالة والتجاهل

  • قم أولاً بعمل نسخة احتياطية من ملفك المحلي (كما قال @ibz)
  • ثم قم بإزالة web.config من المستودع.
  • ثم قم بنسخ web.config مرة أخرى إلى نفس المجلد
  • أخيرًا استخدم svn:ignore حتى لا يحاول التخريب إضافته مرة أخرى إلى المستودع

نظرًا لأنني أستخدم tortoisesvn، لا أستطيع أن أخبرك حقًا بأوامر svn التي يجب عليك استخدامها، ولكن باستخدام tortoisesvn سيكون:

  • جعل النسخ الاحتياطي
  • انقر بزر الماوس الأيمن على الويب. يمسح
  • انقر بزر الماوس الأيمن على web.config في المجلد الموجود تحت التحكم بالمصادر، وحدد SVN Commit => بعد ذلك ستلاحظ أن الملف قد تم حذفه بالفعل من نظام الملفات
  • تحرك لأعلى وانقر بزر الماوس الأيمن على المجلد ضمن التحكم في المصدر ، حدد TortoisesVn | ملكيات
  • في نافذة الخصائص، انقر فوق اسم الخاصية + الجديد "svn:ignore"؛قيمة الخاصية "web.config".قبول التغييرات
  • ارتكاب التغييرات

في مشاريع .net الخاصة بي، أقوم بتضمين الاستثناء التالي مع svn:ignore:bin، obj، *.suo، *.user

نصائح أخرى

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

svn rm --force web.config
svn commit

كن حذرًا لعمل نسخة احتياطية من نسختك المحلية (من web.config) قبل القيام بذلك، حيث سيتم حذفها.

لقد قمت بحل هذه المشكلة باستخدام nant مع ccnet.يؤدي اتباع البرنامج النصي nant build إلى استبدال ملف web.test.config بملف web.config المحلي؛

<?xml version="1.0"?>
    <project name="Project1" default="build">
      <target name="init" depends="clean" />
      <target name="clean" />
      <target name="checkout"/>
      <target name="compile"/>
      <target name="deploy"/>
      <target name="test"/>
      <target name="inspect"/>
      <target name="build" depends="init, checkout">
        <call target="compile" />
        <call target="inspect" />
        <call target="test" />
        <call target="deploy" />
      </target>

      <copy file="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.Test.config" 
          tofile="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.config" 
          overwrite="true" 
       />
       <delete file="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.Test.config" />

    </project>

مهمة نسخ Nant

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