গিটিগনোরে যখন শীর্ষস্থানীয় স্ল্যাশ ব্যবহার করবেন


108

আমি .gitignoreবাক্য গঠনটি আরও স্পষ্টভাবে বোঝার চেষ্টা করছি এবং বিশেষত https://github.com/github/gitignore gitignores হিসাবে সম্পর্কিত।

আমি দেখতে পাচ্ছি যে শীর্ষস্থানীয় স্ল্যাশ কেবলমাত্র .gitignoreফাইলের অবস্থানের সাথে সম্পর্কিত পাথের সাথে ( http://git-scm.com/docs/gitignore থেকে ) মেলে ব্যবহার করতে ব্যবহৃত হয় :

একটি শীর্ষস্থানীয় স্ল্যাশ পথের নামের শুরুতে মেলে। উদাহরণস্বরূপ, "/*.c" "" cat-file.c "এর সাথে মেলে তবে" মোজিলা-sha1 / sha1.c "নয়।

তবে আমি যখন শীর্ষস্থানীয় স্ল্যাশ সরিয়ে ফেলব তখন কী হবে? যতদূর আমি বুঝতে পেরেছি, দুটি ক্ষেত্রে রয়েছে:

  1. যদি প্যাটার্নটিতে স্ল্যাশ না থাকে (বা এটি কেবল একটি পিছনের স্ল্যাশ ধারণ করে, যার অর্থ এটি একটি ডিরেক্টরিের সাথে মেলে) তবে অনুসন্ধানটি পুরো ডিরেক্টরি গাছের ভিতরেই সঞ্চালিত হয়। উদাহরণ হিসেবে বলা যায়, প্যাটার্ন dir/ম্যাচ হবে <root>/dir, <root>/a/dir, <root>/a/b/c/.../dir, ইত্যাদি, যেখানে <root>অবস্থান হয় .gitignoreফাইল।
  2. যদি প্যাটার্নটিতে একটি স্ল্যাশ রয়েছে, যা পিছনের অবস্থানে নেই (এটি শেষ অক্ষর নয়) তবে এটি কেবল .gitignoreফাইলের অবস্থানের সাথে সম্পর্কিত পথের সাথে মেলে ।

এই আচরণটি যাচাই করার জন্য আমি এই উদাহরণগুলি দিয়েছি:

# Directory structure:
<root>
├─ dir/
│   └─ test
├─ src/
│   ├─ dir/
│   │   └─ test
test file is there only because Git does not track empty directories.

প্রথম পরীক্ষা:

# .gitignore
dir/

# git status
nothing to commit

সুতরাং গিট উভয় dirডিরেক্টরি উপেক্ষা করছে । এটি কেস নম্বর 1 এর সাথে সামঞ্জস্যপূর্ণ: প্যাটার্নটির কোনও স্ল্যাশ নেই (অনুচ্ছন্নতা ব্যতীত), তাই গিট পুরো ডিরেক্টরি গাছটি পর্যবেক্ষণ করছে, প্যাটার্নের সাথে মেলে এমন সমস্ত কিছু উপেক্ষা করে।

দ্বিতীয় পরীক্ষা:

# .gitignore
/dir/

# git status
Untracked files:
    src/

এখানে, গিট dirরুট ডিরেক্টরিটির নীচে কেবল ডিরেক্টরিটি অগ্রাহ্য করছে, প্যাটার্নের শীর্ষস্থানীয় স্ল্যাশকে ধন্যবাদ।

তৃতীয় পরীক্ষা:

# .gitignore
dir/*

# git status
Untracked files:
    src/

এটি কেস নম্বর 2 এর সাথে সামঞ্জস্যপূর্ণ: প্যাটার্নটির অভ্যন্তরে কিছুটা স্ল্যাশ রয়েছে, সুতরাং এটি রুট ডিরেক্টরি থেকে শুরু হওয়া একটি পথের নাম হিসাবে বিবেচিত হয়।

এখন সময় আসল প্রশ্নের জন্য। আসুন এই গিটিগনোর ফাইলটি বিবেচনা করুন : downloader/উদাহরণস্বরূপ, তারা ডিরেক্টরিটিকে অগ্রাহ্য করবেন না, তবে তারা downloaderকি পুরো ডিরেক্টরি গাছের প্রতিটি ডিরেক্টরিকেই উপেক্ষা করে না ? এর আগে আমি গিটের কাজ সম্পর্কে যা দেখেছি সেহেতু আমি এটি ভাবতে পরিচালিত হয়েছি।

সুতরাং যদি আমি এর downloaderভিতরে একটি ডিরেক্টরি সহ একটি কাস্টম মডিউল পেয়েছি , এটি কি অপ্রত্যাশিতভাবে পাশাপাশি ম্যাজেন্টোর মূলের নিয়মিত একটি উপেক্ষা করা হবে? এটি কিছুটা পুনর্গঠিত প্রশ্ন কারণ এটি ইতিমধ্যে আমার কাছে ঘটেছিল, বাগ খুঁজে পাওয়া সত্যিই কঠিন উত্পাদন।

সুতরাং, Magento মধ্যে .gitignoreফাইল (যা আমি একটি উদাহরণ হিসাবে শুধুমাত্র উল্লেখ করছি, BTW) তাই তারা সঠিকভাবে রুট থেকে শুরু pathnames বিরুদ্ধে মেলানো হয় প্যাটার্নের একটি অনেক, স্ল্যাশ থাকতে, কিন্তু কিছু ক্ষেত্রে, মত আছে downloader/বা errors/যে , যদি আমার ভুল না হয় তবে এটি সম্ভাব্য বিপজ্জনক, এবং সম্ভবত এটি /downloader/এবং এ পরিবর্তিত হওয়া উচিত /errors/

আরও সাধারণ প্রশ্ন হিসাবে, যখন আমি মূল থেকে স্পষ্টভাবে শুরু করে কোনও পথের নামটি বেছে নিতে চাই এবং স্ল্যাশযুক্ত নিদর্শনগুলির জন্য এটি ব্যবহার না করি, তখন আমি কী সর্বদা স্ল্যাশযুক্ত প্যাটার্নগুলির জন্য অগ্রণী স্ল্যাশ ব্যবহার করতে পারি (ট্রেইলিং ব্যতীত)? সবসময় স্পষ্টতার জন্য নেতৃস্থানীয় স্ল্যাশ ব্যবহার করবেন? আপনি এটি সম্পর্কে কি মনে করেন?

পড়ার জন্য আপনাকে ধন্যবাদ এবং দীর্ঘ পোস্টের জন্য দুঃখিত।


8
দুর্দান্ত প্রশ্ন এবং সত্যিই দুর্দান্ত ব্যাখ্যা, আমি এটি নিয়েও বিরক্ত ছিলাম এবং আপনার গবেষণা আমার কাছে বিষয়গুলি পরিষ্কার করে দিয়েছে। এটি পড়ার পরে আমি বলব যে সবসময় স্ল্যাশ দিয়ে পাথ শুরু করা ভাল অভ্যাস, যদি সেগুলি মূল থেকে শুরু করা উচিত, এটি উদ্দেশ্যটি আরও স্পষ্ট করে তোলে।
মার্টিনসোস

4
ধন্যবাদ :) উদ্দেশ্যগুলি আরও স্পষ্ট করতে স্ল্যাশ ব্যবহার সম্পর্কে আপনার নোটের সাথে আমি সম্মত।
স্বাহনী

8
এটি .gitignore ডকুমেন্টেশনের অংশ হওয়া উচিত। বোঝা অনেক সহজ!
রমরিন

আমি এই দুর্দান্ত পোস্টটি প্রশ্নোত্তর বিভাগে বিভক্ত দেখতে দেখতে চাই ...
বেরেট

উত্তর:


25

সম্ভাব্য দ্রুত ভবিষ্যতের রেফারেন্সের জন্য কেবল সংক্ষিপ্তসার চেয়েছিলাম - শীর্ষস্থানীয় স্ল্যাশ ম্যাচটি মূলকে অ্যাঙ্কর করে। সুতরাং, নীচের উদাহরণে, স্ল্যাশ ছাড়াই, ওয়াইল্ডকার্ডও ফু-র মধ্যে সমস্ত কিছু বাদ দেয় কারণ এটি *গাছের নিচে এবং পুনরাবৃত্তভাবে সরানো হবে । তবে এর সাথে /*এটি ফোল্ডার ফু এবং এর বিষয়বস্তু বাদ দিয়ে সমস্ত কিছু বাদ দেয়:

$ cat .gitignore
/*
!/foo

24

আপনি আপনার নিজের প্রশ্নের পুরো উত্তর দিয়েছেন। আপনি যদি গিথুব / গিটিগনোর রেপো আরও ঘনিষ্ঠভাবে দেখেন তবে আপনি দেখতে পাবেন যে বেশিরভাগ ফাইল কীভাবে নিদর্শনগুলি লেখা হয় সে সম্পর্কে অসঙ্গতিপূর্ণ নিয়ম ব্যবহার করে; এটি সম্ভবত এমন ব্যক্তিদের দ্বারা অবদান ছিল যারা ডকুমেন্টেশন পড়তে বা আপনার মতো জিনিসগুলি পরীক্ষা করার জন্য বিরক্ত করেননি।

সুতরাং যদি এটি সহায়তা করে: আপনি ঠিক বলেছেন, আত্মবিশ্বাসী হন।

আপনি যদি এর মতো সহযোগী প্রকল্পগুলিতে ভুলগুলি দেখতে পান তবে আপনার জ্ঞানের অবদান রাখতে দ্বিধা করবেন না। আপনার আরও আত্মবিশ্বাস আরও বাড়িয়ে তুলতে হবে এমন কিছু নজির রয়েছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.