সংস্করণ নিয়ন্ত্রণে "ডট ফাইলগুলি" কীভাবে রাখবেন?


30

আপনার কনফিগারেশন ফাইলগুলিতে পরিবর্তনগুলি ট্র্যাক করে রাখার জন্য এটকিপার হ'ল একটি দুর্দান্ত সরঞ্জাম /etc। এটি সম্পর্কে কয়েকটি মূল বিষয় সত্যই প্রকাশিত। এটি বিভিন্ন ধরণের ভিসিএসের সাথে ব্যবহার করা যেতে পারে: গিট, মুরুরিয়াল, ডার্কস বা বিজেআর। এটি প্রতিদিন স্বয়ংক্রিয়ভাবে কমিট করে এবং যখনই আপনি প্যাকেজ ইনস্টল করেন, সরিয়ে ফেলুন বা আপগ্রেড করবেন। এটি ফাইল অনুমতি এবং ব্যবহারকারী / গোষ্ঠী মালিকানার মেটাডেটাও ট্র্যাক করে।

আমি আমার "ডট ফাইলগুলি" আমার বাড়ির ডিরেক্টরিতেও ভার্সন নিয়ন্ত্রণের মধ্যে রাখতে চাই, পছন্দ করি বাজার। এই উদ্দেশ্যে ইত্যাদির মতো সরঞ্জাম উপস্থিত থাকলে কেউ কি জানেন?

সবচেয়ে খারাপ ক্ষেত্রে, আমি একটি সহজ ক্রন কাজ চলমান কল্পনা bzr add && bzr ciএকবার বা যোগ সঙ্গে বরাবর দিনে দুবার ~/Documents, ~/Music, ইত্যাদি .bzrignore ইতিমধ্যে একটি স্ক্রিপ্ট সঙ্গে অনুরূপ কিছু কাজ কেউ?

আমি যখন বাজার পছন্দ করি, অন্য বিকল্পগুলি আকর্ষণীয় হতে পারে।


4
ইউনিক্স স্ট্যাক এক্সচেঞ্জে সম্পর্কিত আলোচনা: source উত্স নিয়ন্ত্রণে রাখার জন্য টিপস । এটি আপনার প্রশ্নের উত্তর দেয় না, তবে তবুও দরকারী তথ্য সরবরাহ করতে পারে।
গিলস 'অশুভ হওয়া বন্ধ করুন'

1
এটির জন্য এখন প্রচুর সরঞ্জাম রয়েছে। দেখুন dotfiles.github.io অধ্যায় "ইউটিলিটি dotfile সাধারণ" এর অধীনে।
রবিন সবুজ

@ রবিনগ্রিন যদি আপনি এটির যথাযথ উত্তরের জন্য কাজ করেন তবে আমি এটি গ্রহণ করতে পারি। bzr২০১৫
তে

উত্তর:


7

আমি জানতাম না যে এটি এমন কিছু করেছিল যাতে আমি আমার সংগ্রহস্থলটি ব্যবহার করে যা চাই তা অর্জন করার জন্য আমি কিছু কোড বেত্রাঘাত করেছি: http://github.com/robertmassaioli/config-files

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


3
+ 1 হ্যাশকের জন্য! -1 হাস্কেলের জন্য! হাঃ হাঃ হাঃ. না কিন্তু সত্যিই।
ডেরেক

আমি আপনাকে শুনতে পাচ্ছি. আমি হাস্কেলকে বেছে নিয়েছি কারণ আমি এটি শিখছি, এটি কাজের উপযুক্ত উপযুক্ত ভাষা হতে পারে বা নাও হতে পারে। :)
রবার্ট ম্যাসাওলি

3

ভাল, আমি আরও এগিয়ে গিয়েছিলাম এবং আমি নিজে থেকে আরও ভাল সমাধান না পাওয়া পর্যন্ত এটি করেছি a সুতরাং আমি পাশাপাশি আমি যা করেছি তা ব্যাখ্যা করতে পারি।

প্রথমে আমি একটি করেছি bzr init ~, তবে পরবর্তী কাজটি আমি করেছি bzr ignore "*"। আমি স্থির করেছিলাম যে আমি পুরো জিনিসটি সংস্করণ নিয়ন্ত্রণে রাখতে চাই না। এটি কেবল এটির জন্য মূল্যহীন ছিল না, বিশেষত যখন আপনি বিবেচনা করেন যে সেখানে কিছু জিনিস রয়েছে যা আপনার সত্যিকার অর্থে আপনার কীগুলির মতো ভিসিএসে রাখা উচিত নয়। সুতরাং আমি তখন আমার bzr addসুনির্দিষ্ট যে ফাইলগুলি চেয়েছিলাম তা করতে হবে। আপনি এতে ব্যতিক্রমও যুক্ত করতে পারেন .bzrignore। পাইথন নিয়মিত এক্সপ্রেশন এছাড়াও সেখানে দরকারী। আমি আপাতত এটিকে স্লিম রাখছি। সব ভাল যায় তবে আমি সব যোগ হতে পারে ~/.configএবং ~/.gconfখুব।

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

#! /bin/bash

set -e

TIME=$(date)
STATUS=$(bzr status)

if [ -n "$STATUS" ]; then
    if [ -n "$1" ]; then
         bzr ci ~ -m "$1"
    else
        bzr ci ~ -m "Automatic commit on $TIME"
    fi
fi

exit

আমি এই প্রথম পোস্ট করার সময় আমার নিজের উত্তরটি নির্বাচন করেছিলাম, তবে সেটিকে পূর্বাবস্থায় ফেলার সিদ্ধান্ত নিয়েছি। এটি অবশ্যই 2015 সালের এই প্রশ্নের সেরা উত্তর নয়
অ্যান্ড্রসোমথিং

2

আমি আমার পুরো ~ডিরেক্টরিটিকে বাজারের ভাণ্ডারে পরিণত করেছি । হোম ডিরেক্টরিতে ফাইলগুলির জন্য মেটাডেটা সংরক্ষণ করা কোনও সমস্যা নয়: সবকিছু একই অ্যাকাউন্ট এবং গোষ্ঠীর মালিকানাধীন এবং bzrইতিমধ্যে কার্যকর করার বিটটি সংরক্ষণ করে।

আমি এটিতে ম্যানুয়ালি "আকর্ষণীয়" ফাইলগুলি যুক্ত করব (আমি চাই না, উদাহরণস্বরূপ, আমার সংগীত সংগ্রহ বা ফায়ারফক্স ক্যাশে সংস্করণ নিয়ন্ত্রণে রাখা) তবে আপনি যদি কোনও স্ক্রিপ্টের সাহায্যে এটি স্বয়ংক্রিয় করতে চান তবে আমি মনে করি এটির সহজ সমাধান করছেন bzr add && bzr ciনির্বাচিত ডিরেক্টরি অথবা আউটপুট উপর findকমান্ড ঠিক কাজ হবে।


2

আমি আমার zsh এবং vim ফাইলগুলিকে গিটে রাখি, গিথুব লাগিয়ে বিভিন্ন ভাণ্ডারে রাখি:

zsh এর জন্য, উদাহরণস্বরূপ, আমি ".zsh" তৈরি করেছি এবং এতে zshrc এবং zshenv রেখেছি, এবং zshrc কে ~ / .zshrc এবং zshenv কে ~ / .zshenv এর সাথে সংযুক্ত করার জন্য একটি স্ক্রিপ্ট, এরকম কিছু।

while true
do
read -p "do you want to link zshenv to ~/.zshenv (Y/N)" yn
case $yn in
    [Yy]*) ln -s ~/.zsh/zshenv ~/.zshenv; break;;
    [Nn]*) break;;
    *) echo "please answer yes or no";;
esac
done

while true
do
read -p "do you want to link zshrc to ~/.zshrc (Y/N)" yn
case $yn in
    [Yy]*) ln -s ~/.zsh/zshrc ~/.zshrc; break;;
    [Nn]*) break;;
    *) echo "please answer yes or no";;
esac
done

তাই আমি করি

git clone git://git@github.com:tshirtman/.zsh
cd .zsh
./init.sh

.vim এর জন্য, এটি প্রায় একই, আমি প্যাথোজেন সহ প্লাগইনগুলির জন্য সাবমডিউলগুলি ব্যবহার করি, সুতরাং আমি যুক্ত করেছিলাম init.sh এ

git submodule init
git submodule update

এবং যখন আমি একটি ভিআইএম প্লাগইন যুক্ত করতে চাই, আমি করি

git submodule add git://github.com/nathanaelkane/vim-indent-guides.git bundle/vim-indent-guides

উদাহরণ স্বরূপ.

ঠিক আছে, আপনি পরিচালনা করতে চান এমন কয়েকটি ডট ডায়ারের বেশি হলে আপনার আরও কিছুটা কাজ প্রয়োজন তবে কিছুই এড়ানোতে বাধা দেয় না আপনি সেগুলি একই ডিয়ারে বা ক্রিয়াকলাপ দ্বারা বিচ্ছিন্ন করে রাখতে পারেন (সমস্ত গ্রাফিকাল সম্পাদকদের জন্য, একটির জন্য ওয়েব ক্রিয়াকলাপ…) বা তাই। যাইহোক, আমি যা করেছি তাই কেবল আমার দুটি সেন্ট :)।


1

আমি এমন একটি সমাধান ব্যবহার করি যা স্বয়ংক্রিয়রূপে ইন্দিরকিপারের মতো না (আমাকে নিজেই প্রতিশ্রুতিবদ্ধ করতে হবে) তবে এটি আমার পক্ষে ভালভাবে কাজ করেছে। এটি আমার পছন্দ মতো উন্নত নয়, তবে এটি কার্যকর হয়।

আমি আমার নিজস্ব ইউটিলিটি লিখেছি যা জিএনইউ স্টোর অনুরূপ , স্টো আমি যা চাইছিলাম তা করেনি। আমি এটাকে বাড়িতে স্টো বলি । দৌড়ে গেলে এটি "হোম" নামে একটি ডিরেক্টরি সন্ধান করে। এরপরে এটি ডিরেক্টরিটির অধীনে সমস্ত কিছু নেয় এবং এটি প্রয়োজনীয়ভাবে ডিরেক্টরি তৈরি করে এটি in HOME- র সাথে সম্পর্কিত অবস্থানে সংযুক্ত করে। এটি ফাইলের নামগুলিও অনুবাদ করবে - যদি কোনও ফাইল '_' দিয়ে শুরু হয়, তবে এটি একটি 'দিয়ে প্রতিস্থাপন করা হবে।' আমি এটি করেছি কারণ আমার ডট ফাইলগুলি লুকানো না থাকলে এডিট করার জন্য এটি দুর্দান্ত er (তাদের ডিফল্টরূপে ডিরেক্টরি তালিকাতে দেখুন)। তারপরে, এটি তাদের অ্যাপ্লিকেশন প্রত্যাশিত নামে রাখবে।

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

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



0

আমি আমার সমস্ত ডটফাইলগুলি অনুলিপি করে এটি করেছি আমি আমার / হোম / ডিরেক্টরিতে "ডটফাইলস" নামে একটি ফোল্ডারে উত্স নিয়ন্ত্রণে রাখতে চাই। অবশ্যই এর অর্থ হ'ল ডুপ্লিকেটগুলি রাখা এবং প্রয়োজনে পিছনে পিছনে অনুলিপি করা কিন্তু এটি আমার পক্ষে সবচেয়ে সহজ সমাধান বলে মনে করি।


1
ডুপ্লিকেট পরিচালনা করার পরিবর্তে, আপনি কি কেবল আপনার ডটফাইলে সিমলিংক তৈরি করতে পারবেন না?
রায়ান

আমি মনে করি আপনি অবশ্যই পারবেন!
ডেরেক

0

আমি আমার ফাইলগুলিকে একটি উপ-ডিরেক্টরিতে রাখি এবং প্রতীকী লিঙ্কগুলি তৈরি করি। আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা এটি স্বয়ংক্রিয়ভাবে চলে। আপনি http://code.google.com/p/samking-config-files/source/browse/এগুলি সব পরীক্ষা করে দেখতে পারেন

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