هل يمكنني جعل Subversion + TortoiseSVN غير حساس لحالة الأحرف لنظام التشغيل Windows؟

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

  •  08-06-2019
  •  | 
  •  

سؤال

لقد كنت أستخدم Subversion للتحكم في التعليمات البرمجية مع TortoiseSVN للتفاعل مع الخادم خلال الأشهر القليلة الماضية، وبشكل عام كان الأمر رائعًا!ومع ذلك، أحيانًا يقوم FoxPro IDE الخاص بي بتغيير حالة امتداد الملف دون تحذير حيث "Program.prg"يصبح"برنامج.باراغون") من الواضح أن TortoiseSVN يأخذ هذا على أنه يعني أن الملف الأول قد تمت إزالته، وتم وضع علامة عليه على أنه "مفقود" ويظهر الاسم الثاني على أنه "غير مُصدر"، مما يُلحق الضرر بقدرتي على تتبع التغييرات التي تطرأ على الملف.أدرك أن Subversion قد نشأ في عالم *nix الحساس لحالة الأحرف، ولكن هل هناك أي طريقة للتحكم في هذا السلوك في Subversion أو TortoiseSVN ليكون اسم الملف غير حساس لحالة الأحرف عند استخدامه مع Windows؟

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

المحلول

لسوء الحظ، التخريب حساس لحالة الأحرف.ويرجع ذلك إلى حقيقة أنه يمكن سحب الملفات من Subversion على كل من أنظمة الملفات الحساسة لحالة الأحرف (على سبيل المثال، *nix) وأنظمة الملفات غير الحساسة لحالة الأحرف (مثل Windows وMac).

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

نصائح أخرى

يدعم Windows حساسية حالة الأحرف، ولكن يجب عليك إرسال إشارات POSIX الصحيحة إليه على CreateFile من Windows API!قد يلزم تغيير مفتاح التسجيل (تم تعيين إدخال التسجيل هذا بالفعل في SFU/Tools for Unix وUltimate Windows 7 بحيث يدعم Windows أسماء الملفات الحساسة لحالة الأحرف).

تم تصميم Windows خارج نظام Unix، ولكن أشياء مثل Explorer.exe والبرامج الأخرى مصممة لعدم السماح بحساسية حالة الأحرف من أجل التوافق مع الإصدارات السابقة والأمان (غالبًا عند التعامل مع دوس الذي ينفذ notepad.exe مقابل دوس).NOTPAD.EXE، حيث تكون الأحرف الكبيرة عبارة عن فيروس أو برامج ضارة).

لكن نظام التشغيل Vista+ يتمتع بسمات أمنية تجعل هذا الأمر قديمًا.

لا يدعم TortiousSVN تمرير علامة posix هذه أثناء إنشاء الملفات وإعادة تسميتها.

أنا أستخدم TortoiseSVN مع VFP، وهو في الغالب يتعامل بسلاسة مع قلب الحالة.المرة الوحيدة التي لا يحدث فيها ذلك هي إذا كان الملف مفتوحًا في IDE عندما أحاول تنفيذ الالتزام:قفل الملف الذي يحمله VFP يربكه.فهل هنا تكمن مشكلتك أم أن هناك مشاكل أخرى؟

لقد قدمت عرضًا تقديميًا في FoxForward العام الماضي حول استخدام VFP مع Subversion:تناولت معظم العروض التقديمية سطر الأوامر، ولكن هناك بضع شرائح في النهاية تحتوي على روابط لأدوات تساعدك على العمل مع Subversion في VFP. http://docs.google.com/Presentation?id=dfxkh6x4_3ghnqc4

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

Kit، لقد علقت أعلاه بأن ملفات المصدر الثنائية الخاصة بـ VFP يصعب التعامل معها في Subversion.الرابط الذي ذكرته أعلاه يذكر عدة أدوات لتسهيل الأمر، لكن الأداة التي أعمل بها هي الأداة المساعدة TwoFox من Christof Wollenhaupt - فهي تحول مشروع VFP إلى مشروع نصي فقط.يجب عليك تشغيله يدويًا، لكن ليس لدي مشكلة في ذلك.

http://www.foxpert.com/docs/cvs.en.htm

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

كانت لدينا مشكلة مماثلة وأنا وجدت حلا أفضل من تلك المعروضة هنا، لذلك أنا أشاركها الآن:

  • ل يرتكب يدويا, ، يقوم TortoiseSVN الآن بإصلاح حالة أسماء الملفات تلقائيًا:يقوم بإعادة تسمية الملفات المحلية لتتناسب مع حالة الملفات التي تم إصدارها (فقط عن طريق فتح نافذة الالتزام في هذا المسار)، لذلك يجب أن يكون هناك لا مشكلة مع ذلك.

  • ل الالتزامات الآلية لا يمكنك استخدام TortoiseSVN، لأنه يتطلب منك تأكيد الالتزام يدويًا (يفتح نافذة الالتزام برسالة محددة، ولكن لا يزال يتعين عليك النقر فوق "موافق").ولكن إذا كنت تستخدم Subversion (svn) مباشرة لإجراء التزام تلقائي، فستكون لديك مشكلة حساسة لحالة الأحرف في هذا الالتزام، حيث أن Subversion لا يزال حساسًا لحالة الأحرف...

كيفية حل هذه المشكلة بالنسبة للالتزامات الآلية؟حسنًا، لقد جربت نهجًا مختلطًا:إنشاء ملف دفعي يسمى FixCaseSensitiveFileNames.bat يمكنك استدعاء تمرير المسار الذي تريد إصلاحه قبل الالتزام، على سبيل المثال: call FixCaseSensitiveFileNames.bat C:\MyRepo.يفتح الملف الدفعي TortoiseSVN للالتزام اليدوي، ويعمل ذلك على إصلاح أسماء الملفات تلقائيًا، ولكنه بعد ذلك يغلق نافذة الالتزام بعد توقف مؤقت محدد مسبقًا، حتى تتمكن من متابعة الالتزام التلقائي مع إصلاح أسماء الملفات الحساسة لحالة الأحرف بالفعل.تتم محاكاة الإيقاف المؤقت باستخدام اختبار ping محلي، ويمكنك تغيير المدة عن طريق تغيير -n الوسيطة، وهو عدد المحاولات.إذا لم تقم بالتوقف لفترة كافية، فهناك خطر إغلاق نافذة TortoiseSVN قبل أن يقوم بالإصلاح السحري.ها هو رمز الملف الدفعي:

@echo off
REM *** This BAT uses TortoiseSVN to fix the case-sensitive names of the files in Subversion
REM *** Call it before an automated commit. The Tortoise commit fixes this issue for manual commits,
REM *** so the trick is opening the commit window and close it automatically after a pause (with ping).
REM *** %1 = path to be fixed

start TortoiseProc.exe /command:commit /path:"%1"
ping localhost -n 10 >nul
taskkill /im TortoiseProc.exe

أدى هذا إلى حل مشكلة عملية الإنشاء اليومية الآلية لدينا تمامًا.المشكلة الوحيدة التي أراها هي أن النافذة ستفتح لبضع ثوانٍ، وهو ما لم يكن مشكلة في تصميمنا اليومي، ولكن إذا كانت هذه مشكلة بالنسبة لك، فقد يكون هناك حلول بديلة أيضًا...

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