ট্র্যাকিং সেটিংসের জন্য / (রুট) এ গিট রেপো তৈরি করছেন?


28

তাই আমি গিটকে বেশিরভাগ বিকাশের উদ্দেশ্যে ব্যবহার করি তবে আমি কেবল বুঝতে পেরেছিলাম যে আমি আমার উবুন্টু ইনস্টলেশনে আমার কাছে থাকা সেটিংস ফাইলগুলির সংস্করণ সংরক্ষণ করার জন্য এটি ব্যবহার করতে পারি।

আমার প্রস্তাবিত সেটআপটি হ'ল:

  • git init একটি রেপো এ /

  • একটি যোগ করুন .gitignore/আমি ট্র্যাক করতে চান নির্দিষ্ট সেটিংস ছাড়া উপেক্ষা কোন ফাইল।

    উদাহরণস্বরূপ, .gitignoreএতে ( উত্স ) থাকতে পারে :

    ## Ignore everything...
    *
    
    ## Except...
    !/etc/default/tlp
    !/etc/crontab
    
  • আমি যখনই এই নিম্ন-স্তরের সেটিংস পরিবর্তন করি তখনই আমি সেগুলি ট্র্যাক করতে পারি।

এই সেটআপটিতে ভুল হতে পারে এমন কি কিছু আছে? কার্নেলের সর্বদা /কেবলমাত্র কয়েকটি নির্দিষ্ট ফোল্ডার থাকা দরকার? এটি কোনও অ্যাপ্লিকেশনগুলির কাজকে বিশৃঙ্খলা করবে?


সম্ভবত আপনার ~নিজের ফাইল ডিরেক্টরিগুলির চেয়ে /ফাইলগুলির পরিবর্তে ফাইলগুলি বিবেচনা করা উচিত
মাইকেল ডুরান্ট

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

@ মাইক ডুরান্ট: /etc/crontabআমার ব্যক্তিগত ল্যাপটপের মতো জিনিসগুলি অবশ্যই আমার, তবে আমি কী বলতে চাইছি তা আমি দেখতে পাচ্ছি।
অভিষেক দিভেকর

7
etckeeperব্যাকআপ করুন এবং তৈরি করুন।
মনিকা পুনরায় ইনস্টল করুন - এম শ্র্র্ডার

দুর্ঘটনাক্রমে পর্যায় / প্রতিশ্রুতি যেমন / দেব /
এসডিএ

উত্তর:


37

আপনার উভয় প্রশ্নের উত্তর হ'ল না, আপনি যে ডিরেক্টরিতে চান সেটি তৈরি করতে পারেন /। কেবলমাত্র ঘটতে পারে এমনটি হ'ল আমার অনুমানের কয়েকটি স্পেসিয়াল পাথের সাথে কিছু অনুমতি সংক্রান্ত সমস্যা।

তবে .gitডিরেক্টরিটি অন্য কোথাও সঞ্চয় করা ভাল , এমন কিছু চেহারা:

git --git-dir=/home/user/backup-root --work-tree=/

এখানে পড়ুন ।


5
খুব আকর্ষণীয়, আমি আসলে জানতাম না যে আপনি এই কাজটি গিটে করতে পারবেন! পরামর্শের জন্য ধন্যবাদ.
অভিষেক দিভেকর

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

19

আসলে, আপনি সম্ভবত মধ্যে সংস্করণ নিয়ন্ত্রণ কনফিগারেশন ফাইল করতে চান /etc/(আপনি মূল সংকলনের এন্ট্রি যত্ন সম্পর্কে না /, বিশেষত ডিরেক্টরি মত procবা usrবা binমধ্যে /) যাতে আপনি ইনস্টল করতে পারেন etckeeperপ্যাকেজ

এবং আপনি কয়েকটি নির্বাচিত উপ-ডিরেক্টরিকে (যেমন /usr/share/applications/আপনি উল্লেখ করেছেন) সংস্করণও নিয়ন্ত্রণ করতে পারেন ।

তবে উবুন্টু প্যাকেজ ম্যানেজমেন্ট সিস্টেমের সাথে গোলযোগ করবেন না । সম্ভবত আপনার বেশিরভাগ ইনস্টল করা প্যাকেজগুলির বর্তমান তালিকার ব্যাকআপ করা উচিত।


1
আমি /usr/share/applicationsমাঝেমধ্যে ফাইলগুলির সম্পর্কে যত্ন নিয়ে থাকি কারণ মাঝে মাঝে আমি তাদের সাথে গোলযোগ করি।
অভিষেক দিভেকর

6

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

দ্রষ্টব্য: এটি কম কাজ এবং সম্ভবত 'ডিবাসসাম' ব্যবহার করা আরও কার্যকর

sudo apt-get install debsums

যা আপনাকে বাইনারি বা কনফিগারেশন ফাইলগুলিতে দ্রুত (সর্বাধিক) পরিবর্তনগুলি সনাক্ত করতে দেয়।

ইনস্টল করা প্যাকেজগুলির উদাহরণ হিসাবে এখানে প্রবাহ প্যাকেজগুলির থেকে পৃথক।

$ sudo debsums -c
/boot/vmlinuz-4.10.0-19-generic

এবং আপনি এটির সাথে পরিবর্তিত কনফিগারেশন ফাইলগুলির একটি তালিকা পেতে পারেন:

$ sudo debsums -ec
debsums: missing file /etc/default/chromium-browser (from chromium-browser package)
 /etc/libvirt/libvirt.conf
 <snip>

ক্রোমিয়াম-ব্রাউজারটি কীভাবে অনুপযুক্তভাবে প্যাকেজড রয়েছে এবং প্যাকেজ ফাইল তালিকায় একটি ফাইল তালিকাভুক্ত রয়েছে যা বিদ্যমান নেই।

/var/lib/dpkg/info/chromium-browser.list

এটি dpkg ডেটা ব্যবহার করে এবং একটি বৃহত /.git ডিরেক্টরি এবং কর্মপ্রবাহ এড়িয়ে চলে।


আপনি কি ব্যাখ্যা করতে পারেন "যদি আপনার সমস্যার সাথে নিম্ন স্তরের গিট রেপো থাকে তখন তা লক্ষ্য করা শক্ত হয় না কারণ এটি সবার জন্য উত্তর দেবে।" একটু বেশি? আমি বুঝতে পারছি না যদি .gitignore শুধুমাত্র কয়েকটি ফাইল ট্র্যাক করে তবে এটি কীভাবে সমস্যার সৃষ্টি করতে পারে।
অভিষেক দিভেকর

2
আমি বিশ্বাস করি @abhidivekar ওপি বলছে যখন আপনি বলে অন্য Git রেপো তৈরি /home/$USERতারপর .gitমধ্যে /মধ্যে রেপো জন্য দেওয়া কোনো Git কমান্ডের জন্য উত্তর দিতে হবে /home$USERবরং জন্য যে [ .girফাইল] /home/$USER...
জর্জ Udosen

আহ আমি দেখি. আমি মনে করি আমার তখন এটি একটি আলাদা ফোল্ডারে রাখা উচিত। বা /
অভিষেক দিভেকর

1
@ জর্জি .gitগাছের উপরের ডিরেক্টরিটি উচ্চতর অ্যাক্সেস করতে আপনি কেবল cdএটির কাছে যেতে পারেন, বা এটির একটি উপ-ডিরেক্টরি যেখানে .gitফোল্ডার নেই (একটি সাধারণ ডিরেক্টরি যা)
বিড়াল

2
@ বিবিদিভেকার সঠিক, সুবিধাগুলি যদি সমস্যা ছাড়িয়ে যায় তবে এটি কোনও সমস্যা নয় তবে এটি অপ্রত্যাশিত আচরণ। কোনও ব্লকার নয়, কেবল একটি সাবধানবাণী।
gdahlm

5

সুতরাং আমি অন্যান্য উত্তরগুলি অন্বেষণ করেছি এবং আমি একটি পদ্ধতি খুঁজে পেয়েছি যা আমার জন্য কার্যকর:

  • একটি করুন .gitignore/। গিফ সাবফোল্ডারগুলিতে হোয়াইটলিস্টিং ফাইলগুলিকে যেভাবে হ্যান্ডেল করে তার জন্য এটি অনেক জটিল ছিল thought আমি ব্যবহৃত এই এবং এই লিংক আমাকে সাহায্য করার জন্য।

    ## Source: https://stackoverflow.com/a/29932318/4900327
    ## Comments are on new lines because trailing whitespace matters in Git (stackoverflow.com/a/8865858/4900327)
    
    # Blacklist all files, folders and subfolders in the same directory as the .gitignore file.
    /*
    # Do not blacklist the .gitignore file.
    !.gitignore
    
    # Now whitelist certain files.
    # For files in subfolders, some hoops must be jumped through (stackoverflow.com/a/16318111/4900327):
    
    ## Whitelisting files in /etc/ folder:
    # Whitelist the /etc/ folder (the git repo folder is whitelisted always)
    !/etc/
    # Blacklist all files in /etc/ folder.
    /etc/*
    # Whitelist specific file(s) in /etc/ folder.
    !/etc/crontab
    
    
    ## Whitelisting files in /etc/default/ folder:
    # /etc/ is already whitelisted, and its contents blacklisted.
    # Whitelist /etc/default/ folder.
    !/etc/default/
    # Blacklist all files in /etc/default/ folder.
    /etc/default/*
    # Whitelist specific file(s) in /etc/default/ folder.
    !/etc/default/tlp
    
    
    ## Whitelisting files in /home/USERNAME/ folder:
    # Whitelist /home/ folder.
    !/home/
    # Blacklist all files in /home/ folder.
    /home/*
    # Whitelist /home/USERNAME/ folder.
    !/home/USERNAME/
    # Blacklist all files in /home/USERNAME/ folder.
    /home/USERNAME/*
    # Whitelist specific file(s) in /home/USERNAME/ folder
    !/home/USERNAME/.bash_profile
    !/home/USERNAME/.bashrc
    
  • যান /এবং চালান git init .এখন পর্যন্ত, আমি @ রেভেক্সিনা উল্লিখিত লিঙ্কটি.git/ ব্যবহার করে অন্য ডিরেক্টরিতে ফোল্ডারটি সঞ্চয় করতে পারিনি ।

  • চালান git add .এবং git status। গিট ট্র্যাক করছে এমন সমস্ত সেটিংস ফাইলের একটি তালিকা আপনার পাওয়া উচিত।

    If you used the above `.gitignore`, it should track `/etc/crontab`, `/etc/default/tlp`, `/home/USERNAME/.bash_profile`, and `/home/USERNAME/.bashrc`.
    
  • সাথে প্রতিশ্রুতিবদ্ধ git commit -m "Initial settings files"

  • আপনি git log -p -- path/to/fileবা এর সাথে পরিবর্তনগুলি ট্র্যাক করতে পারেন gitk path/to/file। এই বিষয়ে আরও আলোচনা এখানে


2

আপনি (মত সংবেদনশীল কাপড় সংরক্ষণ করতে যাচ্ছি যদি /etc/shadowGit রেপো), তবে আপনি নিশ্চিত এটি সমস্ত ব্যবহারকারীদের দ্বারা পাঠযোগ্য নয়, যেহেতু ডিফল্ট ভাবে বস্তু অনুমতি থাকবে করা উচিত 444ও ডিরেক্টরিগুলি অনুমতি থাকবে 0755। আপনি এর অনুমতি পরিবর্তন .gitকরতে 700বা এটিতে রাখতে পারেন/root

আর একটি সমস্যা হ'ল গিট ফাইল সিস্টেমের মতো ফাইল অনুমতি সংরক্ষণ করে না এবং এটি বর্ধিত বৈশিষ্ট্যগুলি সংরক্ষণ করে না। ফাইলগুলির জন্য, গিট কেবলমাত্র কার্যকর হয় কিনা তা সঞ্চয় করে। তাই আপনি যদি একটি মুছে ফেলা ফাইল পুনরুদ্ধার করতে চান, তার মালিক এবং গ্রুপ রুট হতে হবে (যদি আপনি রুট হিসাবে এটা করতে), এবং তার অনুমতি হতে হবে 644বা 755। এটি পরিষেবাগুলির কনফিগারেশন ফাইলগুলির জন্য সমস্যাযুক্ত হতে পারে যার মালিক মূল নন।

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