أخبر الفرق برمجيا بين GIT-SVN و GIT Repos؟
-
03-07-2019 - |
سؤال
لقد حصلت على بعض الأشياء التي تم إعدادها والتي تحدد الأسماء الأسماء الديناميكية اعتمادًا على نوع VC Repo الذي يحتوي عليه CWD - على سبيل المثال ، "D" يعمل "SVN Diff" أو "GIT Diff" ، اعتمادًا. (مرتكز على منشور المدونة هذا, ، إذا كان أي شخص مهتم ...)
أرغب في تحديد بعض الأسماء المستعارة بشكل مختلف اعتمادًا على ما إذا كنت في ريبو غيت مقابل ريبو GIT-SVN. هل هناك طريقة سهلة لمعرفة الفرق بين الاثنين؟
المحلول
يجب أن تكون حذراً بعض الشيء عند تحديد المستودعات التي تمثلها مستودعات GIT-SVN بالضبط. قد يحتوي المستودع على أكثر من مستودع SVN.
لن يعمل حل Kafka إلا إذا تم استنساخ مستودع SVN مع خيار -S أو -Layout ، والذي يوجد فيه بالفعل هو فرع trunk
.
لن تعمل إجابة CodeLogic إلا إذا كان هناك مستودع SVN يسمى svn
- ليس هناك حاجة إلى أن هذا صحيح.
أسهل طريقة للتحقق إذا كانت هناك هو إن svn-remote في التكوين هو:
$ git config --get-regexp ^svn-remote
سيجد ذلك أي مستودع GIT-SVN الذي تم تكوينه ، كل ما يسمى. سوف يخرج مع الحالة 0 إذا كان هناك تطابق ، و 1 إذا لم يكن هناك تطابق.
ولكن هذا لا يعني أن مستودع SVN يستخدم حقًا. قد يكون أيضًا أن شخصًا ما قام باستيراد مستودع SVN ، ولكن الاستخدامات هي وحدة فرعية أو كدمج شجرة فرعية ، أو حتى لا على الإطلاق. إذا تم تشغيل البيانات الوصفية في مستودع GIT-SVN ، فيمكنك معرفة ما إذا كان قد تم استخدام أي مراجعة SVN في الرأس الحالي باستخدام شيء مثل هذا:
$ git rev-list -1 --grep='git-svn-id' HEAD
ولكن هذا ربما يكون معقدا بعض الشيء. انت صاحب القرار.
نصائح أخرى
ربما يمكنك استخدام إخراج git config
أمر للتمييز بين git و git-svn repo.
git config --get svn-remote.svn.url
يجب أن تعيد عنوان URL SVN الذي يتم مزامنته ، إذا كان هناك واحد.
يوجد أيضًا فرع يسمى Trunk وفرع يسمى Trunk@[Rev]. ومع ذلك ، أعتقد أن نهج CodeLogics أسهل وأنظف.