git - গিটহাব




কিভাবে আমি একটি গিট রিপোজিটরিতে একটি খালি ডিরেক্টরি যোগ করতে পারি? (19)

কেন আমরা খালি সংস্করণ ফোল্ডার প্রয়োজন হবে

আগেরটা আগে:

একটি খালি ডিরেক্টরি গিট সংস্করণ সিস্টেমের অধীনে একটি গাছের অংশ হতে পারে না

এটা কেবল ট্র্যাক করা হবে না। কিন্তু এমন পরিস্থিতিতে রয়েছে যেখানে "সংস্করণ" খালি ডিরেক্টরি দরকারী হতে পারে, উদাহরণস্বরূপ:

  • একটি পূর্বনির্ধারিত ফোল্ডার কাঠামো scaffolding, এবং এই কাঠামো প্রতিটি ব্যবহারকারী / রিপোজিটরি অবদানকারী জন্য উপলব্ধ করা; অথবা, উপরের একটি বিশেষ ক্ষেত্রে, অস্থায়ী ফাইলগুলির জন্য একটি ফোল্ডার তৈরি করুন, যেমন একটি cache/ অথবা logs/ ডিরেক্টরি, যেখানে আমরা ফোল্ডার সরবরাহ করতে চাই কিন্তু তার সামগ্রীগুলিকে।
  • এর সাথে সম্পর্কিত, কিছু প্রকল্প কিছু ফোল্ডার ছাড়াই কাজ করবে না (যা প্রায়শই একটি পরিকল্পিত পরিকল্পিত পরিকল্পনার ইঙ্গিত দেয়, তবে এটি প্রায়শই বাস্তব-বিশ্ব দৃশ্যকল্প এবং সম্ভবত সেখানে বলা যেতে পারে, অনুমতিগুলির সমস্যা)।

কিছু কিছু workarounds প্রস্তাবিত

অনেক ব্যবহারকারী সুপারিশ:

  1. নির্দেশিকাটি খালি, বা না করতে কিছু বিষয়বস্তু সহ একটি README ফাইল বা অন্য ফাইল স্থাপন করা
  2. একটি .gitignore ফাইলটি "বিপরীত লজিক" (অর্থাত সমস্ত ফাইল অন্তর্ভুক্ত করার জন্য) তৈরি করে যা শেষ পর্যন্ত, # 1 পদ্ধতির একই উদ্দেশ্যে কাজ করে।

যদিও উভয় সমাধান নিশ্চয়ই কাজ করে তবে আমি তাদের গিট সংস্করণে অর্থপূর্ণ পদ্ধতির সাথে অসংগতিপূর্ণ খুঁজে পাই।

  • কেন আপনি বাগাস ফাইল বা পড়ার জন্য অনুমিত হয় যে আপনি সম্ভবত আপনার প্রকল্পে চান না?
  • .gitignore ব্যবহার .gitignore জন্য কোনও জিনিস (ফাইল রাখা ) কেন এটির পক্ষে অর্থহীন (ফাইল বাদে ) এর বিপরীতে হয়?

। গিটকিপ পদ্ধতি

সংস্করণ সিস্টেমের ফোল্ডারটির উপস্থিতি জোরদার করতে .gitkeep নামক একটি খালি ফাইলটি ব্যবহার করুন।

যদিও এটি এত বড় পার্থক্য বলে মনে হচ্ছে না:

  • ফোল্ডারটি রাখার একমাত্র উদ্দেশ্য রয়েছে এমন একটি ফাইল ব্যবহার করুন। আপনি যে কোনও তথ্য দিতে চান না যা আপনি রাখতে চান না।

    উদাহরণস্বরূপ, আপনি ভাল হিসাবে পড়ুন, ভাল তথ্য, ফোল্ডার ব্যবহার রাখা একটি অজুহাত হিসাবে, পড়া উচিত।

    উদ্বেগ বিচ্ছেদ সবসময় একটি ভাল জিনিস, এবং আপনি এখনও অজানা ফাইল উপেক্ষা করতে একটি .gitignore যোগ করতে পারেন।

  • এটি নামকরণ করা। .gitkeep ফাইলটিকে নিজেই এটি থেকে খুব স্পষ্ট এবং সরল করে তোলে (এবং অন্যান্য ডেভেলপারদের কাছে যা ভাগ করা প্রকল্প এবং গিট রেপোজিটরির মূল উদ্দেশ্যগুলির মধ্যে একটি) যা এই ফাইলটি

    • কোনও ফাইলটির সাথে সম্পর্কহীন ফাইল (প্রধান বিন্দু এবং নামটির কারণে)
    • একটি ফাইল পরিষ্কারভাবে জিট সম্পর্কিত
    • এর উদ্দেশ্য ( রাখা ) স্পষ্টভাবে বিবৃত এবং সামঞ্জস্যপূর্ণ এবং semantically উপেক্ষা মানে তার অর্থ

গ্রহণ

আমি .gitkeep , .gitkeep Angular-CLI মত খুব গুরুত্বপূর্ণ কাঠামোর দ্বারা গৃহীত .gitkeep পদ্ধতিটি দেখেছি।

একটি জিট রিপোজিটরিতে কিভাবে আমি একটি খালি ডিরেক্টরি (কোন ফাইল নেই) যোগ করতে পারি?


Git ফাঁকা ডিরেক্টরি ট্র্যাক না। আরো ব্যাখ্যা জন্য গিট FAQ দেখুন। প্রস্তাবিত workaround খালি ডিরেক্টরি একটি। .gitignore ফাইল করা হয়। আমি সমাধানটি পছন্দ করি না, কারণ .gitignore ইউনিক্স কনভেনশনটি "গোপন"। এছাড়াও ডিরেক্টরি খালি আছে কোন ব্যাখ্যা নেই।

ডিরেক্টরিটি খালি কেন এবং কেন এটি গিটে ট্র্যাক করা দরকার তা ব্যাখ্যা করে খালি ডিরেক্টরিটিতে একটি README ফাইল রাখার পরামর্শ দেওয়া হয়। README ফাইলটি যেহেতু গিটের সাথে সম্পর্কিত, ডিরেক্টরিটি আর খালি নেই।

আসল প্রশ্ন কেন আপনি গিট খালি ডিরেক্টরি প্রয়োজন? সাধারণত আপনার কিছু বিল্ড স্ক্রিপ্ট রয়েছে যা কম্পাইল / চালানোর আগে খালি ডিরেক্টরি তৈরি করতে পারে। যদি না তারপর এক করা। যে জিট খালি ডিরেক্টরি নির্বাণ চেয়ে অনেক ভাল সমাধান।

সুতরাং আপনি Git একটি খালি ডিরেক্টরি প্রয়োজন কেন কিছু কারণ আছে। README ফাইল যে কারণ রাখুন। এই ভাবে অন্যান্য ডেভেলপারগণ (এবং ভবিষ্যতে আপনি) জানেন কেন খালি ডিরেক্টরি থাকা দরকার। যখন আপনি খালি ডিরেক্টরি প্রয়োজন সমস্যা সমাধান করা হবে তখন আপনি খালি ডিরেক্টরিটি সরাতে পারেন।

প্রতিটি খালি ডিরেক্টরি তালিকাতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

find -name .git -prune -o -type d -empty -print

প্রতিটি ফাঁকা ডিরেক্টরির মধ্যে স্থানধারক READMEs তৈরি করতে:

find -name .git -prune -o -type d -empty -exec sh -c \
  "echo this directory needs to be empty because reasons > {}/README.emptydir" \;

ডিরেক্টরীতে সবকিছু বাদ দেওয়ার জন্য README ফাইলটি আপনার .gitignore নিম্নোক্ত লাইনগুলি .gitignore :

path/to/emptydir/*
!path/to/emptydir/README.emptydir
path/to/otheremptydir/*
!path/to/otheremptydir/README.emptydir

বিকল্পভাবে, আপনি কেবলমাত্র প্রতি README ফাইলটি উপেক্ষা করা থেকে বাদ দিতে পারেন:

path/to/emptydir/*
path/to/otheremptydir/*
!README.emptydir

তারা ইতিমধ্যে তৈরি করা হয় পরে প্রতিটি README তালিকাবদ্ধ:

find -name README.emptydir

অ্যান্ডি লেস্টার সঠিক, তবে যদি আপনার ডিরেক্টরিটি খালি থাকা দরকার এবং খালি খালি না হয় তবে আপনি একটি .gitignore হিসাবে সেখানে একটি খালি। .gitignore ফাইল রাখতে পারেন।

একটি সরাইয়া হিসাবে, এটি একটি বাস্তবায়ন সমস্যা, একটি মৌলিক গিট স্টোরেজ নকশা সমস্যা নয়। গিট মেইলিং লিস্টে অনেকবার উল্লেখ করা হয়েছে যে, এটি কার্যকর করা হয়নি এমন কারন হল যে এটির জন্য কোনও প্যাচ জমা দেওয়ার জন্য যথেষ্ট যত্ন নেওয়া হয়নি, এটি না করা বা করা উচিত নয়।


আপনি এবং দুর্ভাগ্যবশত করতে পারবেন না। এটি লিনুস টরভাল্ড নিজে নিজে সিদ্ধান্ত নিয়েছেন। তিনি আমাদের জন্য ভাল জানেন।

কোথাও আমি একবার পড়া একটি rant আছে।

আমি Re: খালি ডিরেক্টরি .. পাওয়া, কিন্তু সম্ভবত অন্য একটি আছে।

আপনি workarounds সঙ্গে বাস করতে হবে ... দুর্ভাগ্যবশত।


আমি খুব খালি ডিরেক্টরি সঙ্গে সমস্যা সম্মুখীন হয়েছে। স্থানধারক ফাইলগুলি ব্যবহার করার সময় সমস্যাটি হল যে সেগুলিকে তৈরি করতে হবে এবং যদি তাদের আর প্রয়োজন হয় না তবে তাদের মুছতে হবে (পরে পরে সেখানে উপ-ডিরেক্টরি বা ফাইল যোগ করা হয়েছিল। বড় উত্স গাছগুলি এই স্থানধারক ফাইলগুলি পরিচালনার জন্য গুরুতর এবং ত্রুটিযুক্ত হতে পারে প্রবণ।

এজন্যই আমি একটি ওপেন সোর্স টুল লেখার সিদ্ধান্ত নিয়েছি যা স্বয়ংক্রিয়ভাবে যেমন স্থানধারক ফাইলগুলি তৈরি / মুছে ফেলার পরিচালনা করতে পারে। এটি .NET প্ল্যাটফর্মের জন্য লিখিত এবং মোনো (লিনাক্সের জন্য .NET) এবং উইন্ডোজ এর অধীনে চালিত হয়।

শুধু একটি বর্ণন আছে: http://code.google.com/p/markemptydirs


আসুন আপনাকে বলেছি tmp নামে একটি খালি ডিরেক্টরি দরকার:

$ mkdir tmp
$ touch tmp/.gitignore
$ git add tmp
$ echo '*' > tmp/.gitignore
$ git commit -m 'Empty directory' tmp

অন্য কথায়, আপনি Git কে উপেক্ষা করতে (এবং খালি ডিরেক্টরিটিতে অন্য সব কিছু) অবহিত করার আগে আপনাকে সূচীতে .gitignore ফাইল যুক্ত করতে হবে।


ডিরেক্টরীতে .gitkeep নামক একটি খালি ফাইল তৈরি করুন এবং এটি যুক্ত করুন।


তুমি পারবে না গিট FAQ দেখুন

বর্তমানে গিট ইন্ডেক্স (স্টেজিং এলাকা) এর নকশা শুধুমাত্র তালিকাভুক্ত করার অনুমতি দেয় এবং ফাঁকা ডিরেক্টরিগুলিকে অনুমতি দেওয়ার জন্য যথেষ্ট সক্ষম এমন কেউই এটির প্রতিকারের জন্য এই পরিস্থিতি সম্পর্কে যথেষ্ট যত্ন নেয় না।

তাদের ভিতরে ফাইল যোগ করার সময় ডিরেক্টরি স্বয়ংক্রিয়ভাবে যোগ করা হয়। অর্থাৎ, ডিরেক্টরিগুলি সংগ্রহস্থলে যোগ করতে হবে না এবং তাদের নিজস্ব ট্র্যাক করা হয় না।

আপনি " git add <dir> " বলতে পারেন এবং এটি সেখানে ফাইল যুক্ত করবে।

আপনি যদি চেকআউটগুলিতে বিদ্যমান একটি ডিরেক্টরি প্রয়োজন হয় তবে আপনাকে এটিতে একটি ফাইল তৈরি করতে হবে। .gitignore এই উদ্দেশ্যে ভাল কাজ করে; আপনি এটি খালি ছেড়ে দিতে পারেন, অথবা ডিরেক্টরিগুলির নামগুলি পূরণ করতে পারেন যা আপনি ডিরেক্টরির মধ্যে প্রদর্শন করতে চান।


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

mkdir --parents .generated/bin ## create a folder for storing generated binaries
mv myprogram1 myprogram2 .generated/bin ## populate the directory as needed

এই উদাহরণে, আপনি ডিরেক্টরিটির একটি (ভাঙা) প্রতীকী লিঙ্কটি পরীক্ষা করতে পারেন যাতে আপনি "জেনারেটেড" উপসর্গ ছাড়া এটি অ্যাক্সেস করতে পারেন (তবে এটি ঐচ্ছিক)।

ln -sf .generated/bin bin
git add bin

আপনি আপনার উৎস গাছ পরিষ্কার করতে চান যখন আপনি শুধু করতে পারেন:

rm -rf .generated ## this should be in a "clean" script or in a makefile

যদি আপনি প্রায়-ফাঁকা ফোল্ডারে চেক করার প্রস্তাবিত পদ্ধতিটি গ্রহণ করেন, তবে ".ignignore" ফাইলটি মুছে ফেলার পরেও সামগ্রীটি মুছে ফেলার জন্য আপনার ক্ষুদ্র জটিলতা রয়েছে।

আপনি আপনার রুট থেকে নিম্নলিখিত যোগ করে আপনার সমস্ত জেনারেট ফাইল উপেক্ষা করতে পারেন। Gitignore:

.generated

Rails লগ ফোল্ডার নির্মাণ রুবি উপর রুবি :

mkdir log && touch log/.gitkeep && git add log/.gitkeep

এখন লগ ডিরেক্টরি গাছ অন্তর্ভুক্ত করা হবে। যখন এটি স্থাপন করা হয় তখন এটি অত্যন্ত উপকারী, তাই আপনাকে লগ ডিরেক্টরিগুলি তৈরির জন্য রুটিন লিখতে হবে না।

Logfiles প্রদান করে রাখা যেতে পারে,

echo log/dev.log >> .gitignore

কিন্তু আপনি সম্ভবত যে জানত।


Fray একটি আরো বিকল্প যোগ করা হচ্ছে।

আপনি এটিতে কোনও ডিরেক্টরি যুক্ত করতে চাইছেন git, এর সাথে সম্পর্কিত সকল উদ্দেশ্যে git, খালি থাকা উচিত এবং এটির সামগ্রীগুলি ট্র্যাক করা নাও হতে পারে, .gitignoreযেমন এখানে অসংখ্য বার প্রস্তাব করা হয়েছে, তা হবে কৌশল।

হিসাবে উল্লিখিত বিন্যাস, হয়:

*
!.gitignore

এখন, আপনি যদি এক খোলস ঝরা মধ্যে কমান্ড লাইন এই কাজটি করা, যখন একটি উপায় চান ভিতরে ডিরেক্টরির আপনি যোগ করতে চান, আপনি নির্বাহ করতে পারেন:

$ echo "*" > .gitignore && echo '!.gitignore' >> .gitignore && git add .gitignore

নিজেকে, আমি একটি শেল স্ক্রিপ্ট আছে যা আমি এটি করার জন্য ব্যবহার করি। আপনি যা চান তা স্ক্রিপ্টটি নাম করুন এবং এটি আপনার অন্তর্ভুক্ত পাথটিতে কোথাও যুক্ত করুন, বা সরাসরি এটি উল্লেখ করুন:

#!/bin/bash

dir=''

if [ "$1" != "" ]; then
    dir="$1/"
fi

echo "*" > $dir.gitignore && \
echo '!.gitignore' >> $dir.gitignore && \
git add $dir.gitignore

এর সাথে, আপনি এটি যে ডিরেক্টরিটি যোগ করতে চান তার মধ্যে থেকে এটি সম্পাদন করতে পারেন, অথবা ডিরেক্টরিটির প্রথম এবং একমাত্র প্যারামিটার হিসাবে উল্লেখ করতে পারেন:

$ ignore_dir ./some/directory

আরেকটি বিকল্প (@GreenAsJade দ্বারা একটি মন্তব্যের প্রতিক্রিয়ায়), যদি আপনি যে একটি খালি ফোল্ডার ট্র্যাক করতে চান পারে ভবিষ্যতে ট্র্যাক ফাইল থাকতে, কিন্তু এখন জন্য খালি থাকবে, ommit করতে *থেকে .gitignoreফাইল, এবং চেক যে হবে। মূলত, সমস্ত ফাইল বলছে " আমাকে উপেক্ষা করবেন না ", তবে অন্যথায়, ডিরেক্টরি খালি এবং ট্র্যাক করা হয়।

আপনার .gitignoreফাইল দেখতে হবে:

!.gitignore

এটি, এটি চেক করুন, এবং আপনার কাছে একটি খালি, এখনও ট্র্যাক করা ডিরেক্টরি রয়েছে যা আপনি পরবর্তী সময়ে ফাইলগুলি ট্র্যাক করতে পারেন।

ফাইলটিতে একটি লাইন রাখার কারণ আমি মনে করি যে এটি .gitignoreউদ্দেশ্যটি দেয় । অন্যথায়, লাইন নিচে কিছু এক এটি অপসারণ করতে মনে হতে পারে। আপনি লাইন উপরে একটি মন্তব্য স্থাপন করা হলে এটি সাহায্য করতে পারে।


আমি @ আর্টুর79 এবং @ এমজেএস এর উত্তর পছন্দ করি তাই আমি উভয় একটি সমন্বয় ব্যবহার করছি এবং এটি আমাদের প্রকল্পগুলির জন্য একটি আদর্শ তৈরি করেছি।

find . -type d -empty -exec touch {}/.gitkeep \;

তবে, আমাদের কয়েকটি ডেভেলপার কেবলমাত্র ম্যাক বা লিনাক্সে কাজ করে। উইন্ডোজ এবং আমি অনেক কাজ করেছি সেখানে একই কাজ করতে সমান সহজ এক-মাছ ধরার নৌকা খুঁজে পাইনি। কিছু অন্যান্য কারণের জন্য Cygwin ইনস্টল করার মতো যথেষ্ট ভাগ্যবান ছিল , তবে সিগুইন নির্ধারণের জন্য এটি কেবলমাত্র ওভারকিল বলে মনে হয়।

সুতরাং, আমাদের বেশিরভাগ ডেভেলপারদের ইতোমধ্যেই Ant ইনস্টল করা আছে, প্ল্যাটফর্মের স্বাধীনভাবে এটি সম্পন্ন করার জন্য আমি একটি বিল্ড ফাইল একসাথে রাখি।

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="Gitkeep" basedir="." default="keep">
    <!--Apply to all subdirs of this dir-->
    <target name="keep" description="-> Add a .gitkeep file to all empty subdir's of this dir.">

        <!--Create a ref to all the subdirs in the tree of this dir-->
        <dirset id="dirs.ref" dir="./" includes="**/*"/>
        <!--Create a list of the subdirs under this dir-->
        <property name="dirs.list" refid="dirs.ref" />

        <!--For each subdir-->
        <for list="${dirs.list}" delimiter=";" param="dir">
            <sequential>
                <!--If the subdir is empty this target will add a .gitkeep file to it-->
                <antcall target="gitkeep" inheritall="false">
                    <param name="dir" value="@{dir}"/>
                </antcall>
            </sequential>
        </for>
    </target>

    <!--Add a .gitkeep file to a directory if it's empty-->
    <target name="gitkeep" description="-> Add a .gitkeep file to a specific subdir of this dir. Use -Ddir=relative/path/to/dir">

        <!--Create a ref of the files inside this dir-->
        <fileset dir="${dir}" id="contents.ref"/>

        <!--Create a path to the contents of this directory, ONLY if it's not empty-->
        <pathconvert refid="contents.ref" property="contents.path" setonempty="false"/>

        <if>
            <!--If the dir is empty create the .gitkeep file-->
            <not><isset property="contents.path"/></not>
            <then>
                <!--Create the .gitkeep file-->
                <echo message="Version this dir in Git even if its empty." file="./${dir}/.gitkeep" force="true" append="false"/>
            </then>
        </if>
    </target>
</project>

এখন আমি সহজভাবে চালাতে পারেন

ant -f gitkeep.xml

এবং এটি একটি খালি সাবডিরে একটি .gitkeep ফাইল তৈরি করে। এমনকি উইন্ডোজগুলিতেও :) দ্রষ্টব্য: এই বিল্ড ফাইলটির জন্য Ant Contrib Jar প্রয়োজন ।

আমি here এই ধারণা কাজ করতে অবিরত ।

here


জ্যামি Flournoy সমাধান মহান কাজ করে। এখানে একটি বিট উন্নত সংস্করণ রাখা .htaccess:

# Ignore everything in this directory
*
# Except this file
!.gitignore
!.htaccess

এই সমাধান দিয়ে আপনি একটি খালি ফোল্ডারটি করতে পারবেন, উদাহরণস্বরূপ /log, /tmpঅথবা /cacheফোল্ডার খালি থাকবে।


ডিরেক্টরি ট্র্যাক করার জন্য Git পেতে কোন উপায় নেই, তাই আপনি গিট ট্র্যাক করতে চান এমন ডিরেক্টরিতে একটি স্থানধারক ফাইল যোগ করার একমাত্র সমাধান।

ফাইলটি নামকরণ করা যেতে পারে এবং আপনি যা চান তা ধারণ করতে পারেন তবে বেশিরভাগ লোকেরা একটি খালি ফাইলটি ব্যবহার করে .gitkeep(যদিও কিছু লোক VCS- অ্যাগনস্টিক পছন্দ করে .keep)।

Prefixed .এটি একটি লুকানো ফাইল হিসাবে চিহ্নিত।

আরেকটি ধারণা একটি READMEফাইল যোগ করা হবে যা ব্যাখ্যা করবে ডিরেক্টরিটি কীভাবে ব্যবহার করা হবে।


আপনি create_readme.php হিসাবে এই কোডটি সংরক্ষণ করতে এবং আপনার Git প্রকল্পের রুট ডিরেক্টরি থেকে PHP কোড চালাতে পারেন ।

> php create_readme.php

এটি খালি থাকা সমস্ত ডিরেক্টরিগুলিতে README ফাইল যুক্ত করবে তাই সেই ডিরেক্টরিগুলি তারপর সূচীতে যোগ করা হবে।

<?php
    $path = realpath('.');
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path),       RecursiveIteratorIterator::SELF_FIRST);
    foreach($objects as $name => $object){
        if ( is_dir($name) && ! is_empty_folder($name) ){
            echo "$name\n" ;
            exec("touch ".$name."/"."README");
        }
    }

    function is_empty_folder($folder) {
        $files = opendir($folder);
        while ($file = readdir($files)) {
            if ($file != '.' && $file != '..')
                return true; // Not empty
            }
        }
?>

তারপর কি

git commit -m "message"
git push

আমি সবসময় আমার পছন্দসই ফোল্ডারের কাঠামোটি পরীক্ষা করার জন্য এবং প্রকল্পটির জন্য এটি আমার জন্য তৈরি করার জন্য একটি ফাংশন তৈরি করি। খালি ফোল্ডারগুলি প্রক্সি দ্বারা গিটে অনুষ্ঠিত হওয়ার কারণে এটি এই সমস্যার কাছাকাছি পায়।

function check_page_custom_folder_structure () {
    if (!is_dir(TEMPLATEPATH."/page-customs"))
        mkdir(TEMPLATEPATH."/page-customs");    
    if (!is_dir(TEMPLATEPATH."/page-customs/css"))
        mkdir(TEMPLATEPATH."/page-customs/css");
    if (!is_dir(TEMPLATEPATH."/page-customs/js"))
        mkdir(TEMPLATEPATH."/page-customs/js");
}

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


কখনও কখনও আপনি খারাপ লিখিত লাইব্রেরি বা সফ্টওয়্যার মোকাবেলা করতে হবে, যা একটি "বাস্তব" খালি এবং বিদ্যমান ডিরেক্টরি প্রয়োজন। একটি সহজ নির্বাণ .gitignoreবা .keepতাদের বিরতি এবং একটি বাগ হতে পারে। নিম্নলিখিত ক্ষেত্রে এই ক্ষেত্রে সাহায্য করতে পারে, কিন্তু কোন গ্যারান্টি ...

প্রথমে প্রয়োজনীয় ডিরেক্টরি তৈরি করুন:

mkdir empty

তারপরে আপনি এই ডিরেক্টরিটিতে একটি ভাঙা প্রতীকী লিঙ্ক যুক্ত করুন (তবে উপরে বর্ণিত ব্যবহারের ক্ষেত্রে তুলনায় অন্য কোন ক্ষেত্রে, দয়া করে READMEএকটি ব্যাখ্যা দিয়ে ব্যবহার করুন ):

ln -s .this.directory empty/.keep

এই ডিরেক্টরির মধ্যে ফাইল উপেক্ষা করতে, আপনি এটি আপনার রুট যোগ করতে পারেন .gitignore:

echo "/empty" >> .gitignore

উপেক্ষা করা ফাইল যোগ করার জন্য, এটি কার্যকর করার জন্য একটি পরামিতি ব্যবহার করুন:

git add -f empty/.keep

কমিটির পরে আপনি আপনার সূচী একটি ভাঙা প্রতীকী লিঙ্ক আছে এবং গিট ডিরেক্টরি তৈরি করে। ভাঙা লিঙ্কটি কিছু সুবিধার আছে, এটি নিয়মিত ফাইল এবং কোন নিয়মিত ফাইলের পয়েন্ট নয়। সুতরাং এটি এমনকি "ইচ্ছার দ্বারা নয় বরং অর্থের দ্বারা" (যে কোন ফাইল নেই) প্রশ্নের অংশে ফিট করে, আমি অনুমান করি:

find empty -type f

এই কমান্ডগুলি একটি খালি ফলাফল দেখায়, যেহেতু কোনও ফাইল এই ডিরেক্টরির মধ্যে উপস্থিত নেই। তাই বেশিরভাগ অ্যাপ্লিকেশন, যা কোনও ডিরেক্টরিতে সমস্ত ফাইলগুলি সাধারণত এই লিঙ্কটি দেখতে না পায়, অন্তত যদি তারা "ফাইল বিদ্যমান থাকে" বা "পাঠযোগ্য হয়"। এমনকি কিছু স্ক্রিপ্ট সেখানে কোনও ফাইল খুঁজে পাবে না:

$ php -r "var_export(glob('empty/.*'));"
array (
  0 => 'empty/.',
  1 => 'empty/..',
)

কিন্তু আমি দৃঢ়ভাবে বিশেষ সমাধানগুলিতে এই সমাধানটি ব্যবহার করার সুপারিশ করি, একটি READMEখালি ডিরেক্টরিতে ভাল লেখা সাধারণত একটি ভাল সমাধান। (এবং আমি জানতাম না এটি উইন্ডোজ ফাইল সিস্টেমের সাথে কাজ করে ...)


কখনও কখনও আমার কাছে ফোল্ডারগুলির সাথে রিপোজিটরি রয়েছে যা কেবলমাত্র "সামগ্রী" হিসাবে বিবেচিত ফাইলগুলি ধারণ করবে - এটি এমন কোনও ফাইল নয় যা আমি সংস্করণযুক্ত হওয়ার বিষয়ে যত্নশীল, এবং তাই কখনও সংঘটিত হওয়া উচিত নয়। গিট এর। জিগিনগোর ফাইল দিয়ে, আপনি পুরো ডিরেক্টরি উপেক্ষা করতে পারেন। কিন্তু এমন সময় আছে যখন রেপো ফোল্ডারটি উপকারী হবে। এখানে এই প্রয়োজন সম্পাদন করার জন্য একটি চমৎকার সমাধান।

অতীতে আমি যা করেছি তা আমার রেপোর root এ একটি .gitignore ফাইল রাখে এবং তারপরে ফোল্ডারটি বাদ দিন, যেমন:

/app/some-folder-to-exclude
/another-folder-to-exclude/*

যাইহোক, এই ফোল্ডার তারপর repo অংশ হয়ে না। আপনি সেখানে একটি README ফাইল মত কিছু যোগ করতে পারে। কিন্তু তারপর আপনি আপনার অ্যাপ্লিকেশন বলতে হবে কোনো README ফাইল প্রক্রিয়াকরণের বিষয়ে চিন্তা করবেন না।

যদি আপনার অ্যাপ ফোল্ডারে থাকা (যদিও খালি থাকে) উপর নির্ভর করে তবে আপনি কেবল ফোল্ডারে একটি .gitignore ফাইল যুক্ত করতে পারেন এবং দুটি লক্ষ্য অর্জন করতে এটি ব্যবহার করতে পারেন:

Git বলুন ফোল্ডারে একটি ফাইল রয়েছে, যা গিটটিকে রেপোতে যুক্ত করে। এই ফোল্ডারটির বিষয়বস্তু উপেক্ষা করতে Git কে বলুন, এই ফাইলটি নিজেই হ্রাস করুন। আপনার খালি ডিরেক্টরিগুলির ভিতরে রাখতে .gitignore ফাইলটি এখানে রয়েছে:

*
!.gitignore

প্রথম লাইন (*) এই ডিরেক্টরির মধ্যে সবকিছু উপেক্ষা করতে গিটকে বলে। দ্বিতীয় লাইন Gitignore ফাইলটি উপেক্ষা করতে না বলে বলে। আপনি এই ফাইলটি প্রতি খালি ফোল্ডারে আপনি সংগ্রহস্থলে যুক্ত করতে পারেন।


touch .keep

লিনাক্সে, এটি .keep নামে একটি খালি ফাইল তৈরি করে। এই নামটি .gitkeep জন্য অ্যাগনস্টিকের মতো .gitkeep হিসাবে পছন্দ করা হয়, তবে পরবর্তীটি গিটের জন্য নির্দিষ্ট। দ্বিতীয়ত, অন্য ব্যবহারকারী যেমন উল্লেখ করেছেন, .git প্রিফিক্স কনভেনশনটি ফাইল এবং ডিরেক্টরিগুলির জন্য সংরক্ষিত হওয়া উচিত যা গিট নিজেই ব্যবহার করে।

বিকল্পভাবে, অন্য answer হিসাবে উল্লেখ করা হয়েছে, ডিরেক্টরি পরিবর্তে একটি বর্ণনামূলক README বা README.md ফাইল থাকতে পারে।

অবশ্যই এই ফাইলটির উপস্থিতির কারণে আপনার অ্যাপ্লিকেশনটি ভাঙ্গবে না।








git-add