دمج Fogbugz مع TortoiseSVN بدون واجهة خلفية لعنوان URL/Subversion

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

سؤال

لقد قمت بتثبيت TotroiseSVN ولدي غالبية مستودعاتي تقوم بتسجيل الدخول والخروج من C:\subversion\ وزوجين يقومان بتسجيل الدخول والخروج من مشاركة عبر الشبكة (لقد نسيت هذا عندما نشرت هذا السؤال في الأصل).

هذا يعني أنه ليس لدي خادم "تخريب" في حد ذاته.

كيف يمكنني دمج TortoiseSVN وFogbugz؟

يحرر:تم إدراج الخط المائل

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

المحلول

لقد قمت بالتحقيق في هذه المشكلة وتمكنت من حلها.هناك بعض المشاكل البسيطة ولكن يمكن حلها.

هناك 3 أجزاء متميزة لهذه المشكلة، على النحو التالي:

  1. الجزء TortoiseSVN - الحصول على TortoiseSVN لإدراج Bugid والارتباط التشعبي في سجل svn

  2. الجزء FogBugz - الحصول على FogBugz لإدراج معلومات SVN والروابط المقابلة

  3. جزء 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.

التعليمات السابقة تعمل بشكل جيد، وسأقتبسها هنا للراحة:

تكوين الخصائص

  1. انقر بزر الماوس الأيمن على الدليل الجذر للمشروع الذي تم سحبه والذي تريد العمل معه.

  2. حدد "TortoiseSVN -> الخصائص"

  3. أضف خمسة أزواج من قيم الخاصية بالنقر فوق "جديد..." وإدراج ما يلي في "اسم الخاصية" و"قيمة الخاصية" على التوالي:(تأكد من تحديد "تطبيق الخاصية بشكل متكرر" لكل واحدة)

    bugtraq:label    BugzID:
    bugtraq:message  BugzID: %BUGID%
    bugtraq:number   true
    bugtraq:url      http://[your fogbugz URL here]/default.asp?%BUGID%
    bugtraq:warnifnoissue   false
    
  4. انقر فوق موافق"

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

هذا كل شيء.ستضيف 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\

  1. انتقل إلى حساب FogBugz الخاص بك وانقر فوق "إضافات" -> "تكوين تكامل التحكم بالمصدر".

  2. قم بتنزيل ملف VBScript لـ Subversion (لا تهتم بالملف الدفعي)

  3. قم بإنشاء مجلد لتخزين البرامج النصية للربط.أضعه في نفس المجلد مثل مستودعاتي.على سبيل المثال. \\myserver\svn\hooks\

  4. أعد تسمية VBscript لإزالة ملف .safe في نهاية اسم الملف.

  5. احفظ نسختي من الملف الدفعي في دليل الخطافات الخاص بك، باسم post-commit-tsvn.bat

  6. انقر بزر الماوس الأيمن على أي دليل.

  7. حدد "TortoiseSVN > الإعدادات" (في قائمة النقر بزر الماوس الأيمن من الخطوة الأخيرة)

  8. حدد "ربط البرامج النصية"

  9. انقر فوق "إضافة" وقم بتعيين الخصائص على النحو التالي:

    • نوع الخطاف:هوك ما بعد الالتزام

    • مسار نسخة العمل: C:\Projects (أو أيًا كان الدليل الجذر الخاص بك لجميع مشاريعك.)

    • سطر الأوامر للتنفيذ: \\myserver\svn\hooks\post-commit-tsvn.bat (يجب أن يشير هذا إلى المكان الذي وضعت فيه دليل الخطافات في الخطوة 3)

    • حدد "انتظر حتى ينتهي البرنامج النصي"

  10. انقر فوق "موافق" مرتين.

في المرة القادمة التي تقوم فيها بالالتزام وإدخال 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


تعيين "الخطافات"

  1. انتقل إلى حساب الضباب الخاص بك وانقر فوق "إضافات" > "تكوين تكامل التحكم بالمصدر".

  2. قم بتنزيل "post-commit.bat" وملف VBScript الخاص بـ Subversion

  3. قم بإنشاء دليل "الخطافات" في موقع مشترك يسهل الوصول إليه (ويفضل أن يكون بدون مسافات في مسار الملف)

  4. ضع نسخة من الملفات في مجلدات الخطافات

  5. أعد تسمية الملفات بدون الامتداد ".safe".

  6. انقر بزر الماوس الأيمن على أي دليل.

  7. حدد "TortoiseSVN > الإعدادات" (في قائمة النقر بزر الماوس الأيمن من الخطوة الأخيرة)

  8. حدد "ربط البرامج النصية"

  1. انقر فوق "إضافة"

  2. اضبط الخصائص هكذا:

    • نوع الخطاف:هوك ما بعد الالتزام

    • مسار نسخة العمل:C:\\Projects (أو أيًا كان الدليل الجذر الخاص بك لجميع مشاريعك.إذا كان لديك عدة، فستحتاج إلى القيام بهذه الخطوة لكل واحدة.)

    • سطر الأوامر للتنفيذ:C:\\subversion\\hooks\\post-commit.bat (يجب أن يشير هذا إلى المكان الذي تضع فيه دليل الخطافات الخاص بك من الخطوة 3)

    • لقد حددت أيضًا مربع الاختيار لانتظار انتهاء البرنامج النصي ...

تحذير:لا تنس الشرطة المائلة الخلفية المزدوجة!"\\"

انقر فوق موافق...

Adding a Hook Script

ملحوظة:لقطة الشاشة مختلفة، اتبع النص لمعرفة مسارات الملفات، وليس لقطة الشاشة...

في هذه المرحلة، يبدو أنه يمكنك النقر فوق "Issue Tracker Integration" وتحديد Fogbugz.لا.إنها تُرجع فقط "لا يوجد موفري خدمة تعقب المشكلات متاحين".

  1. انقر فوق "موافق" لإغلاق نافذة حوار الإعدادات بأكملها

تكوين الخصائص

  1. مرة أخرى ، انقر بزر الماوس الأيمن على الدليل الجذر للمشروع الذي تم فحصه الذي تريد العمل معه (تحتاج إلى القيام بهذه الخطوة "تكوين الخصائص" لكل مشروع - راجع "ترحيل الخصائص بين المشاريع" أدناه)

  2. حدد "ProtoisesVn> Properties" (في قائمة النقر بزر الماوس الأيمن من الخطوة الأخيرة)

  3. أضف خمسة أزواج قيمة الخاصية بالنقر فوق "جديد ..." وإدخال ما يلي في "اسم الخصائص" و "قيمة الخاصية" على التوالي:

bugtraq:التسمية BugzID:
bugtraq:الرسالة BugzID:%%BUGID%%

bugtraq: الرقم صحيح

bugtraq:url http://[الخاص بك عنوان URL FOGBUGZ هنا] /fefault.asp؟٪bugid٪

bugtraq:warnifnoissue false

properties window adding new property

  1. انقر فوق موافق"

تنفيذ التغييرات وعرض السجلات

الآن عندما تقوم بالالتزام، يمكنك تحديد خطأ واحد يعالجه الالتزام.هذا النوع يجبرك على الالتزام بعد إصلاح كل خطأ...

specifying bug addressed when commiting

عند عرض السجل (انقر بزر الماوس الأيمن فوق جذر المشروع، TortoiseSVN > إظهار السجل) يمكنك رؤية معرف الخطأ الذي يتوافق مع كل عملية فحص (1)، ويمكنك النقر فوق رقم معرف الخطأ ليتم نقلك إلى fogbugz لعرض هذا الخطأ تلقائيًا إذا كنت تنظر إلى رسالة السجل الفعلية.أنيق جدا!


ترحيل الخصائص بين المشاريع

  1. انقر بزر الماوس الأيمن على المشروع الذي يحتوي بالفعل على تكوين الخصائص المناسب

  2. حدد "TortoiseSVN > خصائص" (من قائمة النقر بزر الماوس الأيمن من الخطوة 1)

  3. تسليط الضوء على كافة الخصائص المطلوبة

  4. انقر فوق "تصدير"

  5. قم بتسمية الملف باسم الخاصية، ثم ضعه في دليل يسهل الوصول إليه (لقد وضعت ملفي مع ملفات الخطافات)

save properties dialogue

  1. انقر بزر الماوس الأيمن على الدليل الجذر للمشروع الذي تم سحبه والذي يحتاج إلى تعيين الخصائص له.

  2. انقر فوق "استيراد"

  3. حدد الملف الذي قمت بتصديره في الخطوة 4 أعلاه

  4. انقر فوق فتح

لماذا لا يمكنك ببساطة تثبيت خادم التخريب؟إذا قمت بتحميل خادم فيسوال إس في إن, ، وهو مجاني، يمكنك الحصول على خادم http للكود المصدر الخاص بك وبالتالي يمكنك استخدام البرامج النصية FogBugz لدمج الاثنين.

السبب وراء سؤالي هو أن جميع البرامج النصية والوثائق حتى الآن تفترض أن لديك الخادم، وأن البرامج النصية من جانب العميل جديدة جدًا بحيث لا يمكن لـ FogBugz أن يكون لديها قوالب لها، لذا فأنت متروك لأجهزتك الخاصة في هذا الشأن.

تكمن المشكلة في أن FogBugz سيرتبط بصفحة ويب، وأن file:///etc ليس صفحة ويب.للحصول على التكامل بطريقتين، تحتاج إلى خادم ويب لمستودع التخريب الخاص بك.إما أن تقوم بإعداد Apache أو أي شيء آخر يمكنه استضافة هذه الأشياء بالطريقة الصحيحة.

لست متأكدًا من أنني أتبعك.هل لديك المستودعات على الشبكة أو على محرك الأقراص C:\ الخاص بك؟وفقًا لاثنين من مشاركاتك، فأنت تمتلك كليهما، أو لا تملك أيًا منهما، أو أحدهما أو...

لا يمكنك الحصول على VisualSVN أو Apache لخدمة المستودعات بأمان من خلال مشاركة عبر الشبكة.نظرًا لأنك قلت في الأصل أن لديك المستودعات على محرك الأقراص C:\، فهذا هو ما تحصل عليه من نصيحة بشأنه.إذا كان لديك إعداد مختلف، فأنت بحاجة إلى إخبارنا بذلك.

إذا كانت لديك المستودعات على القرص الصلب المحلي الخاص بك، فسأقوم بتثبيت VisualSVN، أو دمجه في Apache.يمكن أن يعمل VisualSVN بشكل جيد جنبًا إلى جنب مع Apache، لذا إذا سلكت هذا المسار، فما عليك سوى تثبيته.يمكن أيضًا نسخ مستودعاتك الحالية إلى الدليل الجذر لمستودع التخزين الخاص بـ VisualSVN وستكون جاهزًا للعمل.

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

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