تقسیم شدہ سورس کنٹرول سسٹم Git 2.25 کی ریلیز

دستیاب تقسیم شدہ سورس کنٹرول سسٹم کی رہائی Git 2.25.0. Git سب سے زیادہ مقبول، قابل اعتماد اور اعلی کارکردگی والے ورژن کنٹرول سسٹمز میں سے ایک ہے، جو برانچنگ اور انضمام پر مبنی لچکدار غیر لکیری ترقیاتی ٹولز فراہم کرتا ہے۔ تاریخ کی سالمیت کو یقینی بنانے اور سابقہ ​​تبدیلیوں کے خلاف مزاحمت کو یقینی بنانے کے لیے، ہر کمٹ میں پوری پچھلی تاریخ کی مضمر ہیشنگ کا استعمال کیا جاتا ہے؛ ڈویلپرز کے ڈیجیٹل دستخطوں کے ساتھ انفرادی ٹیگز اور کمٹ کی تصدیق کرنا بھی ممکن ہے۔

پچھلی ریلیز کے مقابلے میں، نئے ورژن میں 583 تبدیلیاں شامل ہیں، جو 84 ڈویلپرز کی شرکت سے تیار کی گئی ہیں، جن میں سے 32 نے پہلی بار ترقی میں حصہ لیا۔ اہم بدعات:

  • جزوی کلوننگ کا امکان استحکام اور مکمل تیاری کے قریب ہے، جس سے آپ ڈیٹا کا صرف ایک حصہ منتقل کر سکتے ہیں اور ذخیرہ کی نامکمل کاپی کے ساتھ کام کر سکتے ہیں۔ ایک عام کلون ریپوزٹری سے تمام ڈیٹا کاپی کرتا ہے، بشمول تبدیلی کی تاریخ میں ہر فائل کے ہر ورژن کو۔ بہت بڑے ذخیروں کے لیے، ڈیٹا کاپی کرنے کے نتیجے میں ٹریفک اور ڈسک کی جگہ میں نمایاں اضافہ ہوتا ہے، چاہے ڈویلپر صرف فائلوں کے ذیلی سیٹ میں ہی دلچسپی رکھتا ہو۔ ورکنگ سورس ٹری کے صرف ایک حصے کو دوبارہ حاصل کرنا آسان بنانے کے لیے، نئی ریلیز ایک تجرباتی "اسپارس-چیک آؤٹ" کمانڈ اور "کلون" کمانڈ کے لیے ایک نیا "--sparse" آپشن متعارف کراتی ہے۔

    اس سے پہلے، سلیکٹیو کلوننگ کا عمل ٹاسک کے ذریعے انجام دیا جاتا تھا۔ فلٹرز غیر ضروری مواد کو فلٹر کرنے کے لیے اور گم شدہ فائلوں کو بھرنے کو غیر فعال کرنے کے لیے "—no-checkout" کا اختیار۔ اس کے بعد، چیک آؤٹ آپریشن کرنے سے پہلے، core.sparseCheckout کی ترتیب کو فعال کرنا اور .git/info/sparse-checkout فائل میں خارج کیے گئے راستے کے نمونوں کی فہرست کی وضاحت کرنا ضروری تھا۔ مثال کے طور پر، بلاب کے بغیر کلون کرنے اور فائلوں کو گہرائی 2 یا اس سے زیادہ کی ذیلی ڈائریکٹریوں سے نکالے جانے سے روکنے کے لیے، آپ چلا سکتے ہیں:

    git clone --filter=blob: none --no-checkout/your/repository/here repo
    $cd ریپو
    $ cat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git چیک آؤٹ

    نئی "git sparse-checkout" کمانڈ کام کو بہت آسان بناتی ہے اور نامکمل ذخیرہ کے ساتھ کام کو منظم کرنے کے عمل کو درج ذیل کمانڈز تک کم کر دیتی ہے۔

    git clone --filter=blob: none --sparse/your/repository/here repo
    git sparse-checkout set /path/to/check/out

    sparse-checkout کمانڈ آپ کو .git/info/sparse-checkout کو دستی طور پر کنفیگر کیے بغیر چیک آؤٹ (سیٹ) کے لیے راستوں کی فہرست ترتیب دینے کے ساتھ ساتھ راستوں کی موجودہ فہرست (فہرست) اور جزوی چیک آؤٹ کو فعال یا غیر فعال کرنے کی اجازت دیتی ہے۔ /غیر فعال)۔

    بہت بڑے ذخیروں اور ٹیمپلیٹس کی فہرستوں کے ساتھ کام کو بہتر بنانے کے لیے، "git config core.sparseCheckoutCone"، جو اجازت شدہ پیٹرن کو محدود کرتا ہے (من مانی .gitignore پیٹرن کے بجائے، آپ یہ بتا سکتے ہیں کہ آیا دی گئی سب ڈائرکٹری میں تمام راستے اور تمام فائلوں کو چیک آؤٹ کیا جانا چاہیے)۔ مثال کے طور پر، اگر ایک بڑے ذخیرہ میں ایک ڈائرکٹری "A/B/C" ہے اور تمام کام ذیلی ڈائرکٹری "C" میں مرتکز ہیں، تو جب آپ sparseCheckoutCone موڈ کو فعال کرتے ہیں، تو کمانڈ "git sparse-checkout set A/B/ C" "C" کے پورے مواد کو نکالے گا، لیکن "A" اور "B" سے یہ صرف وہی حصے نکالے گا جو "C" کے ساتھ کام کرنے کے لیے ضروری ہیں۔

  • دستاویزات ("git rebase -h") سے، "--preserve-merges" آپشن کے تمام حوالہ جات کو ہٹا دیا گیا ہے، جسے فرسودہ کر دیا گیا ہے اور اس کے بجائے کمٹ کے سیٹ کو منتقل کرنے کے لیے استعمال کیا جانا چاہیے۔git rebase --rebase-merges".
  • میلنگ لسٹوں کو بھیجے گئے پیچ کے ساتھ پیغامات کی پڑھنے کی اہلیت کو بہتر بنانے کے لیے، "git format-patch —cover-from-description موضوع" کا اختیار شامل کیا گیا ہے، جب وضاحت کی گئی ہو، برانچ کی تفصیل کے متن کا پہلا پیراگراف اس مضمون کے موضوع کے طور پر استعمال ہوتا ہے۔ پیچ کے ایک سیٹ کے لیے کور لیٹر۔
  • "git apply -3way" کمانڈ اور "merge.conflictStyle" ترتیب کے مشترکہ استعمال کے لیے نافذ کردہ تعاون ("git apply" اب merge.conflictStyle سے تنازعہ کی وضاحت کے انداز کو مدنظر رکھتا ہے جب کوشش کرنے کے بعد تنازعہ کو حل کرنا ضروری ہو ریپوزٹری میں پیچ فائل لگانے کے لیے)۔
  • "git diff/grep --show-function/-function-context" جیسے آپریشنز میں استعمال ہونے والے فنکشن ڈیفینیشن کوڈ کو زبان کے پروگراموں میں فنکشن کی حدود کی وضاحت کرنے کے لیے بڑھا دیا گیا ہے۔ ایلیکسیر.
  • "گٹ ایڈ"، "گٹ کمٹ"، "گٹ ری سیٹ" اور دیگر کمانڈز میں ایک نیا آپشن شامل کیا گیا ہے - "-pathspec-from-file"، جس سے فائل یا ان پٹ اسٹریم سے راستوں کی فہرست لوڈ کرنا ممکن ہو جاتا ہے۔ ، انہیں کمانڈ لائن پر درج کرنے کے بجائے۔
  • کمٹ لکھتے وقت ڈائریکٹری کی سطح پر نام بدلنے کا پتہ لگانے کا مسئلہ حل ہو گیا ہے۔ اگر ذیلی ڈائرکٹری کے مواد کو ذخیرے کی جڑ میں منتقل کیا جائے تو تعریف کام نہیں کرتی ہے۔
  • دوبارہ ڈیزائن کردہ "git add -i" کمانڈ کے ابتدائی نفاذ کی تجویز پیش کی گئی ہے، جس سے آپ کو تبدیل شدہ مواد کو انٹرایکٹو طور پر شامل کرنے کی اجازت دی گئی ہے، جسے پرل سے C میں دوبارہ لکھا گیا ہے۔ "گٹ ایڈ - پی" کمانڈ کا اسی طرح کا دوبارہ کام جاری ہے۔
  • "git log –graph" کمانڈ کو ری فیکٹر کیا گیا ہے، جو کہ مخزن میں تبدیلیوں کی تاریخ کے ساتھ گراف کی ASCII امیج تیار کرتا ہے۔ دوبارہ کام نے کہانی کے ڈھانچے کو مسخ کیے بغیر آؤٹ پٹ کو نمایاں طور پر بہتر اور آسان بنانا ممکن بنایا، جس نے مثال کے طور پر ٹرمینل لائن کی چوڑائی سے آگے بڑھنے والی تصویر کا مسئلہ حل کر دیا۔
  • "git log --format=.." آپشن آپ کو آؤٹ پٹ فارمیٹ کو تبدیل کرنے کی اجازت دیتا ہے،
    "@" علامت سے پہلے اشارہ کردہ ای میل ایڈریس کے صرف حصے کو ظاہر کرنے کے لیے "l/L" جھنڈوں کی حمایت کے ساتھ بڑھایا گیا ہے (مثال کے طور پر، مفید ہے جب تمام ڈویلپرز کی تمام ای میلز ایک ہی ڈومین میں ہوں)۔

  • "git submodule" کمانڈ میں "set-url" ذیلی کمانڈ شامل کی گئی۔
  • میں منتقلی کی تیاری میں ٹیسٹ کٹس کو اپ ڈیٹ کر دیا گیا ہے۔
    SHA-2 کے بجائے ہیشنگ الگورتھم SHA-1۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں