دمج Fogbugz مع TortoiseSVN بدون واجهة خلفية لعنوان URL/Subversion
-
08-06-2019 - |
سؤال
لقد قمت بتثبيت TotroiseSVN ولدي غالبية مستودعاتي تقوم بتسجيل الدخول والخروج من C:\subversion\ وزوجين يقومان بتسجيل الدخول والخروج من مشاركة عبر الشبكة (لقد نسيت هذا عندما نشرت هذا السؤال في الأصل).
هذا يعني أنه ليس لدي خادم "تخريب" في حد ذاته.
كيف يمكنني دمج TortoiseSVN وFogbugz؟
يحرر:تم إدراج الخط المائل
المحلول
لقد قمت بالتحقيق في هذه المشكلة وتمكنت من حلها.هناك بعض المشاكل البسيطة ولكن يمكن حلها.
هناك 3 أجزاء متميزة لهذه المشكلة، على النحو التالي:
الجزء TortoiseSVN - الحصول على TortoiseSVN لإدراج Bugid والارتباط التشعبي في سجل svn
الجزء FogBugz - الحصول على FogBugz لإدراج معلومات SVN والروابط المقابلة
جزء WebSVN - التأكد من أن الروابط من FogBugz تعمل بالفعل
تعليمات الجزء 1 موجودة في إجابة أخرى، على الرغم من أنها في الواقع تفعل أكثر مما هو مطلوب.إن الأشياء المتعلقة بالخطافات هي في الواقع جزء من الجزء الثاني، وكما تمت الإشارة إليه - فهي لا تعمل "خارج الصندوق"
فقط للتأكيد، نحن نتطلع إلى استخدام TortoiseSVN بدون خادم SVN (أي.المستودعات القائمة على الملفات)
أقوم بالوصول إلى المستودعات باستخدام مسارات UNC، ولكنها تعمل أيضًا مع محركات الأقراص المحلية أو محركات الأقراص المعينة.
يعمل كل هذا مع TortoiseSVN v1.5.3 وSVN Server v1.5.2 (تحتاج إلى تثبيت SVN Server لأن الجزء الثاني يحتاج إلى svnlook.exe
الذي هو في حزمة الخادم.لا تقوم فعليًا بتكوينه للعمل كخادم SVN) بل قد يكون من الممكن النسخ فقط svnlook.exe
من كمبيوتر آخر ووضعه في مكان ما في طريقك.
الجزء 1 - السلحفاةSVN
إن إنشاء خصائص TortoiseSVN هو كل ما هو مطلوب للحصول على الروابط في سجل SVN.
التعليمات السابقة تعمل بشكل جيد، وسأقتبسها هنا للراحة:
تكوين الخصائص
انقر بزر الماوس الأيمن على الدليل الجذر للمشروع الذي تم سحبه والذي تريد العمل معه.
حدد "TortoiseSVN -> الخصائص"
أضف خمسة أزواج من قيم الخاصية بالنقر فوق "جديد..." وإدراج ما يلي في "اسم الخاصية" و"قيمة الخاصية" على التوالي:(تأكد من تحديد "تطبيق الخاصية بشكل متكرر" لكل واحدة)
bugtraq:label BugzID: bugtraq:message BugzID: %BUGID% bugtraq:number true bugtraq:url http://[your fogbugz URL here]/default.asp?%BUGID% bugtraq:warnifnoissue false
انقر فوق موافق"
كما يقول جيف، ستحتاج إلى القيام بذلك لكل نسخة عمل، لذا اتبع تعليماته لترحيل الخصائص.
هذا كل شيء.ستضيف TortoiseSVN الآن رابطًا إلى FogBugz bugID المطابق عند الالتزام.إذا كان هذا هو كل ما تريد، يمكنك التوقف هنا.
الجزء 2 - فوجبوجز
لكي ينجح هذا، نحتاج إلى إعداد البرامج النصية للخطاف.يتم استدعاء الملف الدفعي بشكل أساسي بعد كل التزام، وهذا بدوره يستدعي البرنامج النصي VBS الذي يقوم بالإرسال إلى FogBugz.يعمل برنامج VBS النصي بشكل جيد في هذه الحالة، لذا لا نحتاج إلى تعديله.
المشكلة هي أن الملف الدفعي مكتوب ليعمل كملف الخادم هوك، ولكننا بحاجة إلى عميل خطاف.
يستدعي خادم SVN ربط ما بعد الالتزام بهذه المعلمات:
<repository-path> <revision>
تستدعي TortoiseSVN خطاف ما بعد الالتزام باستخدام هذه المعلمات:
<affected-files> <depth> <messagefile> <revision> <error> <working-copy-path>
ولهذا السبب لا يعمل - المعلمات خاطئة.نحن بحاجة إلى تعديل الملف الدفعي بحيث يقوم بتمرير المعلمات الصحيحة إلى البرنامج النصي VBS.
ستلاحظ أن TSVN لا يمرر مسار المستودع، وهذه مشكلة، ولكنه يعمل في الحالات التالية:
- اسم المستودع واسم نسخة العمل متماثلان
- يمكنك تنفيذ الالتزام في جذر نسخة العمل، وليس في مجلد فرعي.
سأرى ما إذا كان بإمكاني حل هذه المشكلة وسأقوم بالنشر مرة أخرى هنا إذا قمت بذلك.
إليك ملفي الدفعي المعدل والذي يعمل (يرجى المعذرة على التعليقات المفرطة...)
ستحتاج إلى تعيين أدلة الخطاف والمستودع لتتناسب مع الإعداد الخاص بك.
rem @echo off
rem SubVersion -> FogBugz post-commit hook file
rem Put this into the Hooks directory in your subversion repository
rem along with the logBugDataSVN.vbs file
rem TSVN calls this with args <PATH> <DEPTH> <MESSAGEFILE> <REVISION> <ERROR> <CWD>
rem The ones we're interested in are <REVISION> and <CWD> which are %4 and %6
rem YOU NEED TO EDIT THE LINE WHICH SETS RepoRoot TO POINT AT THE DIRECTORY
rem THAT CONTAINS YOUR REPOSITORIES AND ALSO YOU MUST SET THE HOOKS DIRECTORY
setlocal
rem debugging
rem echo %1 %2 %3 %4 %5 %6 > c:\temp\test.txt
rem Set Hooks directory location (no trailing slash)
set HooksDir=\\myserver\svn\hooks
rem Set Repo Root location (ie. the directory containing all the repos)
rem (no trailing slash)
set RepoRoot=\\myserver\svn
rem Build full repo location
set Repo=%RepoRoot%\%~n6
rem debugging
rem echo %Repo% >> c:\temp\test.txt
rem Grab the last two digits of the revision number
rem and append them to the log of svn changes
rem to avoid simultaneous commit scenarios causing overwrites
set ChangeFileSuffix=%~4
set LogSvnChangeFile=svn%ChangeFileSuffix:~-2,2%.txt
set LogBugDataScript=logBugDataSVN.vbs
set ScriptCommand=cscript
rem Could remove the need for svnlook on the client since TSVN
rem provides as parameters the info we need to call the script.
rem However, it's in a slightly different format than the script is expecting
rem for parsing, therefore we would have to amend the script too, so I won't bother.
rem @echo on
svnlook changed -r %4 %Repo% > %temp%\%LogSvnChangeFile%
svnlook log -r %4 %Repo% | %ScriptCommand% %HooksDir%\%LogBugDataScript% %4 %temp%\%LogSvnChangeFile% %~n6
del %temp%\%LogSvnChangeFile%
endlocal
سأفترض أن المستودعات موجودة \\myserver\svn\
ونسخ العمل كلها ضمن `C:\Projects\
انتقل إلى حساب FogBugz الخاص بك وانقر فوق "إضافات" -> "تكوين تكامل التحكم بالمصدر".
قم بتنزيل ملف VBScript لـ Subversion (لا تهتم بالملف الدفعي)
قم بإنشاء مجلد لتخزين البرامج النصية للربط.أضعه في نفس المجلد مثل مستودعاتي.على سبيل المثال.
\\myserver\svn\hooks\
أعد تسمية VBscript لإزالة ملف
.safe
في نهاية اسم الملف.احفظ نسختي من الملف الدفعي في دليل الخطافات الخاص بك، باسم
post-commit-tsvn.bat
انقر بزر الماوس الأيمن على أي دليل.
حدد "TortoiseSVN > الإعدادات" (في قائمة النقر بزر الماوس الأيمن من الخطوة الأخيرة)
حدد "ربط البرامج النصية"
انقر فوق "إضافة" وقم بتعيين الخصائص على النحو التالي:
نوع الخطاف:هوك ما بعد الالتزام
مسار نسخة العمل:
C:\Projects
(أو أيًا كان الدليل الجذر الخاص بك لجميع مشاريعك.)سطر الأوامر للتنفيذ:
\\myserver\svn\hooks\post-commit-tsvn.bat
(يجب أن يشير هذا إلى المكان الذي وضعت فيه دليل الخطافات في الخطوة 3)حدد "انتظر حتى ينتهي البرنامج النصي"
انقر فوق "موافق" مرتين.
في المرة القادمة التي تقوم فيها بالالتزام وإدخال Bugid، سيتم إرساله إلى FogBugz.لن تعمل الروابط ولكن على الأقل معلومات المراجعة موجودة ويمكنك البحث يدويًا عن السجل في TortoiseSVN.
ملحوظة:ستلاحظ أن جذر المستودع تم ترميزه بشكل ثابت في الملف الدفعي.ونتيجة لذلك، إذا قمت بالسحب من المستودعات التي ليس لها نفس الجذر (على سبيل المثال.واحد على محرك الأقراص المحلي والآخر على الشبكة) فستحتاج إلى استخدام ملفين دفعيين وإدخالين متطابقين ضمن Hook Scripts في إعدادات TSVN.تتمثل طريقة القيام بذلك في الحصول على شجرتين منفصلتين لنسخ العمل - واحدة لكل جذر مستودع.
الجزء 3 - WebSVN
إررر، أنا لم أفعل هذا :-)
من قراءة مستندات WebSVN، يبدو أن WebSVN لا يتكامل فعليًا مع خادم SVN، بل يتصرف مثل أي عميل SVN آخر ولكنه يقدم واجهة ويب.من الناحية النظرية، يجب أن تعمل بشكل جيد مع المستودع القائم على الملفات.لم أحاول ذلك بالرغم من ذلك.
نصائح أخرى
هذه الإجابة ناقصة ومعيبة!إنه يعمل فقط من TortoisSVN إلى Fogbugz، ولكن ليس العكس.ما زلت بحاجة إلى معرفة كيفية جعله يعمل بشكل عكسي من Fogbugz (كما هو مصمم لذلك) حتى أتمكن من رؤية رقم المراجعة الذي تمت معالجة الخطأ فيه من Fogbugz أثناء النظر إلى الخطأ.
عناوين URL مفيدة
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-propertypage.html
http://tortoisesvn.net/issuetracker_integration
تعيين "الخطافات"
انتقل إلى حساب الضباب الخاص بك وانقر فوق "إضافات" > "تكوين تكامل التحكم بالمصدر".
قم بتنزيل "post-commit.bat" وملف VBScript الخاص بـ Subversion
قم بإنشاء دليل "الخطافات" في موقع مشترك يسهل الوصول إليه (ويفضل أن يكون بدون مسافات في مسار الملف)
ضع نسخة من الملفات في مجلدات الخطافات
أعد تسمية الملفات بدون الامتداد ".safe".
انقر بزر الماوس الأيمن على أي دليل.
حدد "TortoiseSVN > الإعدادات" (في قائمة النقر بزر الماوس الأيمن من الخطوة الأخيرة)
حدد "ربط البرامج النصية"
انقر فوق "إضافة"
اضبط الخصائص هكذا:
نوع الخطاف:هوك ما بعد الالتزام
مسار نسخة العمل:C:\\Projects (أو أيًا كان الدليل الجذر الخاص بك لجميع مشاريعك.إذا كان لديك عدة، فستحتاج إلى القيام بهذه الخطوة لكل واحدة.)
سطر الأوامر للتنفيذ:C:\\subversion\\hooks\\post-commit.bat (يجب أن يشير هذا إلى المكان الذي تضع فيه دليل الخطافات الخاص بك من الخطوة 3)
لقد حددت أيضًا مربع الاختيار لانتظار انتهاء البرنامج النصي ...
تحذير:لا تنس الشرطة المائلة الخلفية المزدوجة!"\\"
انقر فوق موافق...
ملحوظة:لقطة الشاشة مختلفة، اتبع النص لمعرفة مسارات الملفات، وليس لقطة الشاشة...
في هذه المرحلة، يبدو أنه يمكنك النقر فوق "Issue Tracker Integration" وتحديد Fogbugz.لا.إنها تُرجع فقط "لا يوجد موفري خدمة تعقب المشكلات متاحين".
- انقر فوق "موافق" لإغلاق نافذة حوار الإعدادات بأكملها
تكوين الخصائص
مرة أخرى ، انقر بزر الماوس الأيمن على الدليل الجذر للمشروع الذي تم فحصه الذي تريد العمل معه (تحتاج إلى القيام بهذه الخطوة "تكوين الخصائص" لكل مشروع - راجع "ترحيل الخصائص بين المشاريع" أدناه)
حدد "ProtoisesVn> Properties" (في قائمة النقر بزر الماوس الأيمن من الخطوة الأخيرة)
أضف خمسة أزواج قيمة الخاصية بالنقر فوق "جديد ..." وإدخال ما يلي في "اسم الخصائص" و "قيمة الخاصية" على التوالي:
bugtraq:التسمية BugzID:
bugtraq:الرسالة BugzID:%%BUGID%%bugtraq: الرقم صحيح
bugtraq:url http://[الخاص بك عنوان URL FOGBUGZ هنا] /fefault.asp؟٪bugid٪
bugtraq:warnifnoissue false
- انقر فوق موافق"
تنفيذ التغييرات وعرض السجلات
الآن عندما تقوم بالالتزام، يمكنك تحديد خطأ واحد يعالجه الالتزام.هذا النوع يجبرك على الالتزام بعد إصلاح كل خطأ...
عند عرض السجل (انقر بزر الماوس الأيمن فوق جذر المشروع، TortoiseSVN > إظهار السجل) يمكنك رؤية معرف الخطأ الذي يتوافق مع كل عملية فحص (1)، ويمكنك النقر فوق رقم معرف الخطأ ليتم نقلك إلى fogbugz لعرض هذا الخطأ تلقائيًا إذا كنت تنظر إلى رسالة السجل الفعلية.أنيق جدا!
ترحيل الخصائص بين المشاريع
انقر بزر الماوس الأيمن على المشروع الذي يحتوي بالفعل على تكوين الخصائص المناسب
حدد "TortoiseSVN > خصائص" (من قائمة النقر بزر الماوس الأيمن من الخطوة 1)
تسليط الضوء على كافة الخصائص المطلوبة
انقر فوق "تصدير"
قم بتسمية الملف باسم الخاصية، ثم ضعه في دليل يسهل الوصول إليه (لقد وضعت ملفي مع ملفات الخطافات)
انقر بزر الماوس الأيمن على الدليل الجذر للمشروع الذي تم سحبه والذي يحتاج إلى تعيين الخصائص له.
انقر فوق "استيراد"
حدد الملف الذي قمت بتصديره في الخطوة 4 أعلاه
انقر فوق فتح
لماذا لا يمكنك ببساطة تثبيت خادم التخريب؟إذا قمت بتحميل خادم فيسوال إس في إن, ، وهو مجاني، يمكنك الحصول على خادم http للكود المصدر الخاص بك وبالتالي يمكنك استخدام البرامج النصية FogBugz لدمج الاثنين.
السبب وراء سؤالي هو أن جميع البرامج النصية والوثائق حتى الآن تفترض أن لديك الخادم، وأن البرامج النصية من جانب العميل جديدة جدًا بحيث لا يمكن لـ FogBugz أن يكون لديها قوالب لها، لذا فأنت متروك لأجهزتك الخاصة في هذا الشأن.
تكمن المشكلة في أن FogBugz سيرتبط بصفحة ويب، وأن file:///etc ليس صفحة ويب.للحصول على التكامل بطريقتين، تحتاج إلى خادم ويب لمستودع التخريب الخاص بك.إما أن تقوم بإعداد Apache أو أي شيء آخر يمكنه استضافة هذه الأشياء بالطريقة الصحيحة.
لست متأكدًا من أنني أتبعك.هل لديك المستودعات على الشبكة أو على محرك الأقراص C:\ الخاص بك؟وفقًا لاثنين من مشاركاتك، فأنت تمتلك كليهما، أو لا تملك أيًا منهما، أو أحدهما أو...
لا يمكنك الحصول على VisualSVN أو Apache لخدمة المستودعات بأمان من خلال مشاركة عبر الشبكة.نظرًا لأنك قلت في الأصل أن لديك المستودعات على محرك الأقراص C:\، فهذا هو ما تحصل عليه من نصيحة بشأنه.إذا كان لديك إعداد مختلف، فأنت بحاجة إلى إخبارنا بذلك.
إذا كانت لديك المستودعات على القرص الصلب المحلي الخاص بك، فسأقوم بتثبيت VisualSVN، أو دمجه في Apache.يمكن أن يعمل VisualSVN بشكل جيد جنبًا إلى جنب مع Apache، لذا إذا سلكت هذا المسار، فما عليك سوى تثبيته.يمكن أيضًا نسخ مستودعاتك الحالية إلى الدليل الجذر لمستودع التخزين الخاص بـ VisualSVN وستكون جاهزًا للعمل.
لست متأكدًا من سبب تصنيف هذا المنشور الكبير هنا على أنه غير مكتمل، لأنه يوضح بالتفصيل الخطوات اللازمة لإعداد برنامج نصي للربط لإبلاغ FogBugz بالمراجعات الجديدة المرتبطة بالحالات، والتي يجب أن تكون ما يجب أن يكون عليه الأمر غير مكتمل الرسالة تقول أنها لا تفعل.هل هذا لا يعمل؟