الدليل: استخدام Git بين الدلائل المحلية

الدليل: استخدام Git بين الدلائل المحلية
الدليل: استخدام Git بين الدلائل المحلية

مقدمة للتحكم في الإصدار المحلي

يمكن أن تكون إدارة أدلة محلية متعددة بكفاءة مهمة صعبة، خاصة عند محاولة الحفاظ على تزامن بيئات التطوير والاختبار. في هذا الدليل، سنستكشف كيفية استخدام Git لتسهيل التحكم في الإصدار بين دليلين محليين: أحدهما للتطوير والآخر لخدمة صفحات الويب محليًا.

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

يأمر وصف
rsync أداة مساعدة لنقل الملفات ومزامنتها بكفاءة عبر أنظمة الكمبيوتر عن طريق التحقق من الطابع الزمني وحجم الملفات.
--update يوجه rsync لتخطي الملفات الأحدث على جهاز الاستقبال.
--exclude يُستخدم مع rsync لاستبعاد الملفات المطابقة لنمط محدد من المزامنة.
Path.home() طريقة في وحدة Pathlib في Python للحصول على الدليل الرئيسي للمستخدم الحالي.
shutil.copy2() وظيفة في وحدة Shutil في بايثون تقوم بنسخ الملفات، مع الحفاظ على البيانات الوصفية مثل الطوابع الزمنية.
os.makedirs() وظيفة في وحدة نظام التشغيل في Python تقوم بإنشاء دليل بشكل متكرر، مما يضمن إنشاء جميع الدلائل الوسيطة.
os.path.getmtime() دالة في وحدة نظام التشغيل في Python والتي تُرجع آخر وقت تعديل للملف.
Path.match() طريقة في وحدة Pathlib في Python لمطابقة مسارات الملفات مقابل نمط محدد.

فهم البرامج النصية للأتمتة للتحكم في الإصدار المحلي

البرنامج النصي الأول هو برنامج نصي شل يستخدم rsync أمر لمزامنة الملفات من دليل التطوير إلى دليل الخادم المحلي. يبدأ البرنامج النصي بتحديد المصدر (DEV_DIR) والوجهة (LOCAL_DIR) الدلائل. ثم يحدد الأنماط المراد استبعادها، مثل ملفات النسخ الاحتياطي وملفات النقاط، باستخدام مصفوفة تسمى EXCLUDE_PATTERNS. يقوم البرنامج النصي ببناء rsync استبعاد المعلمات ديناميكيًا وتشغيل rsync -av --update الأمر، الذي يقوم بتحديث الدليل الوجهة بملفات أحدث من المصدر، باستثناء الأنماط المحددة.

النص الثاني مكتوب بلغة بايثون ويستخدم وحدات مثل os, shutil، و pathlib لتحقيق وظائف مماثلة. وهو يحدد نفس أدلة المصدر والوجهة وأنماط الاستبعاد. يمر البرنامج النصي عبر دليل التطوير، وينشئ الدلائل الضرورية في الوجهة إذا لم تكن موجودة. يتحقق مما إذا كان يجب استبعاد كل ملف باستخدام وظيفة مخصصة وينسخ الملفات فقط إذا كانت أحدث من الملفات الموجودة باستخدام shutil.copy2(). يوفر هذا البرنامج النصي أسلوبًا أكثر تفصيلاً وقابلية للتخصيص لمزامنة الملفات.

أتمتة مزامنة الملفات مع برامج Shell النصية

برمجة Shell لتحديثات الملفات التلقائية

#!/bin/bash
# Define directories
DEV_DIR=~/dev/remote
LOCAL_DIR=/var/www/html
# Define excluded patterns
EXCLUDE_PATTERNS=("backups/" ".*")
# Create rsync exclude parameters
EXCLUDE_PARAMS=()
for pattern in "${EXCLUDE_PATTERNS[@]}"; do
    EXCLUDE_PARAMS+=(--exclude "$pattern")
done
# Sync files from DEV_DIR to LOCAL_DIR
rsync -av --update "${EXCLUDE_PARAMS[@]}" "$DEV_DIR/" "$LOCAL_DIR/"

استخدام Python لمزامنة الملفات مع ميزات تشبه Git

برنامج Python النصي لمزامنة الملفات المحلية

import os
import shutil
from pathlib import Path
EXCLUDE_PATTERNS = ["backups", ".*"]
DEV_DIR = Path.home() / "dev/remote"
LOCAL_DIR = Path("/var/www/html")
def should_exclude(path):
    for pattern in EXCLUDE_PATTERNS:
        if path.match(pattern):
            return True
    return False
for root, dirs, files in os.walk(DEV_DIR):
    rel_path = Path(root).relative_to(DEV_DIR)
    dest_path = LOCAL_DIR / rel_path
    if not should_exclude(rel_path):
        os.makedirs(dest_path, exist_ok=True)
        for file in files:
            src_file = Path(root) / file
            dest_file = dest_path / file
            if not should_exclude(src_file) and \
               (not dest_file.exists() or
                os.path.getmtime(src_file) > os.path.getmtime(dest_file)):
                shutil.copy2(src_file, dest_file)

التقنيات المتقدمة للتحكم في الإصدار المحلي

بالإضافة إلى نصوص المزامنة الأساسية، هناك طريقة قوية أخرى لإدارة المستودعات المحلية وهي استخدام Git Hooks. تسمح لك خطافات Git بأتمتة المهام في نقاط مختلفة في سير عمل Git. على سبيل المثال، يمكنك إعداد ربط ما بعد الالتزام لدفع التغييرات تلقائيًا من دليل التطوير الخاص بك إلى دليل الخادم المحلي الخاص بك. بهذه الطريقة، في كل مرة تقوم فيها بإجراء تغييرات في دليل Dev الخاص بك، ستنعكس التحديثات في دليل Localhost.

لإعداد رابط ما بعد الالتزام، قم بإنشاء برنامج نصي في دليل .git/hooks في مستودع Dev الخاص بك المسمى post-commit. يمكن أن يتضمن هذا البرنامج النصي أوامر لنسخ الملفات المحدثة إلى دليل Localhost الخاص بك أو استخدام أمر rsync للمزامنة. يوفر استخدام Git Hooks طريقة سلسة وآلية لإدارة التحديثات، مما يضمن مزامنة بيئات التطوير والاختبار لديك دائمًا دون تدخل يدوي.

الأسئلة المتداولة حول التحكم في الإصدار المحلي

  1. كيف أقوم بإعداد مستودع Git الأساسي؟
  2. يستخدم git init في دليل المشروع الخاص بك لإنشاء مستودع Git جديد.
  3. كيف يمكنني استبعاد ملفات معينة من التتبع؟
  4. قم بإنشاء ملف .gitignore في مستودعك وقم بإدراج أنماط الملفات المراد استبعادها.
  5. ما هو الغرض من الأمر rsync؟
  6. rsync يستخدم لمزامنة الملفات والدلائل بين موقعين بكفاءة.
  7. كيف يمكنني أتمتة مزامنة الملفات بين الدلائل؟
  8. استخدم البرنامج النصي مع rsync أو Python لأتمتة العملية، وفكر في استخدام Git Hooks للأتمتة ضمن سير عمل Git.
  9. هل يمكنني استخدام Git محليًا بدون مستودع بعيد؟
  10. نعم، يمكن استخدام Git محليًا لتتبع التغييرات وإدارة التحكم في الإصدار داخل الأدلة المحلية الخاصة بك.
  11. كيف أتعامل مع تعارضات الملفات في Git؟
  12. سيطالبك Git بحل التعارضات يدويًا إذا كانت التغييرات في مستودعك المحلي تتعارض مع التحديثات من مصادر أخرى.
  13. ما هي خطافات Git؟
  14. خطافات Git هي نصوص برمجية يتم تشغيلها تلقائيًا في نقاط معينة في سير عمل Git، مثل بعد الالتزام أو قبل الدفع.
  15. كيف يمكنني نسخ الملفات بامتدادات محددة باستخدام برنامج نصي؟
  16. في برنامج نصي Shell، استخدم أنماطًا مثل *.php لمطابقة ونسخ الملفات ذات امتدادات محددة.
  17. ما هو الفرق بين cp و rsync؟
  18. cp هو أمر أساسي لنسخ الملفات، بينما rsync يقدم خيارات متقدمة للمزامنة والكفاءة.

الأفكار النهائية حول حلول التحكم في الإصدار المحلي

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