مدیریت فایلهای تنظیمات با استفاده از Git bare
- داتفایلها
- ویندو منیجرها و بزرگترین مزیتشان: قابلیت شخصی سازی
- سایر ابزارها
- روش Git bare repo
- منابع:
- داتفایلهای من
داتفایلها
یکی از بزرگترین مزایای استفاده از گنو/لینوکس قابلیت شخصی سازی آن است. بسیاری از کاربران شخصی سازی را با تغییر فایلهای تنظیمات انجام میدهند. به مرور که از سیستم استفاده میکنیم، این فایلها پیوسته تغییر میکنند و وقتی تعداد آنها زیاد شود و شما روی سیستمهای مختلف از آنها استفاده کنید، مدیریت این فایلها دشوارتر میشود. یکی از بهترین روشها برای مدیریت این فایلها استفاده از Git
است.
ویندو منیجرها و بزرگترین مزیتشان: قابلیت شخصی سازی
من مدتهاست که از گنو/لینوکس روی سیستمهای شخصی استفاده میکنم و سالهاست که استفاده از ویندو منیجرّهای مینیمال را به محیطهای دسکتاپ بزرگ مثل گنوم و کیدیای ترجیح میدهم. استفاده از ویندو منیجرها سبب شده که سیستم من سبکتر باشد و برای استفاده من کاملا شخصی سازی شده باشد.
هنگامی که شما به جای دسکتاپهای بزرگ از ویندو منیجرها استفاده میکنید، بسیاری از تنظیمات سیستم و ابزارها را خودتان باید انجام دهید.
این کار سبب میشود که شما سیستمی که از آن استفاده میکنید را بهتر بشناسید و بسته به نیازتان آن را تغییر بدهید.
مدیریت فایلهای تنظیمات برای استفاده از آنها روی سیستمهای مختلف با سختافزار و سیستم عاملهای متفاوت ممکن است دشوار به نظر برسد. استفاده از Git bare repository
یکی از بهترین و هوشمندانهترین راهها برای این کار است. از آنجا که بیشتر ما برای مدیریت پروژههامان از Git
استفاده میکنیم، این کار نیاز به نصب ابزار تازه و یاد گرفتن آن ندارد.
سایر ابزارها
ابزارهای بسیاری برای مدیریت داتفایلها وجود دارد. معروفترین آنها شاید GNU Stow
باشد. لیستی از این ابزارها را میتوانید اینجا یا در ویکی آرچ ببینید.
روش Git bare repo
اولین جایی که من این روش بسیار هوشمندانه را پیدا کردم در این گفتگوی هکر نیوز بود. پس از آن جاهای مختلفی درباره آن خواندم و تصمیم گرفتم از این روش برای مدیریت داتفایلها استفاده کنم.
مزایا
- بدون نیاز به نصب ابزار اضافی
- از symlink استفاده نمیکنید.
- فایلها در یک ریپوزیتوری
Git
مدیریت میشوند. - میتوانید از شاخههای مختلف برای سیستمهای مختلف استفاده کنید.
- میتوانید پیکربندی خود را به راحتی هنگام نصب سیستم جدید تکرار کنید.
چطور کار میکند؟
در این روش مخزن Git bare
در یک پوشه جانبی (مانند $HOME/.cfg یا $HOME/.myconfig) ذخیره میشود. با استفاده از یک alias
ویژه دستورهای Git
روی این پوشه جانبی اجرا میشوند و تداخلی با داتفایلها و بقیه مخزنهای Git
نخواهند داشت.
آغاز از صفر
اگر پیش از این پیکربندیهای خود را در یک مخزن Git
ردیابی نکردهاید، میتوانید با این فرمانها به راحتی از این روش استفاده کنید:
فرمان نخست یک پوشه در مسیر ~/.cfg
ایجاد می کند که یک مخزن Git bare
است که فایلهای ما را ردیابی میکند.
سپس یک alias
میسازیم تا هر گاه میخواهیم با مخزن داتفایلها تعامل داشته باشیم به جای git
معمولی از آن استفاده کنیم.
ما یک فلگ محلی برای مخفی کردن فایلهایی که هنوز آنها را ردیابی نمیکنیم تنظیم میکنیم. چون پس از این وقتی وضعیت پیکربندی و سایر فرمانها را تایپ میکنید، فایلهایی که علاقهای به ردیابی آنها ندارید بهعنوان ردیابی نشده نشان داده نشوند. من ترجیح میدهم به جای این کار از فرمان echo "*" > ~/.gitignore
استفاده کنم. در این صورت برای اضافه کردن فایلها باید از فلگ -f
در فرمانهای config
استفاده کنیم مثلا: config add -f .dotfile
. این کمک میکند که ناخواسته با فرمان config add .
فایلهای اضافی افزوده و کامیت نشوند.
من از zsh
استفاده میکنم و فایل ~/.config/shell/aliasrc
را در .zshrc
سورس کردهام. دقت کنید که اگر شما از شل دیگری استفاده میکنید در خط چهارم alias
را برای آن شل اضافه کنید:
برای fish
میتوانید از این تابع استفاده کنید:
نصب فایلها روی سیستم جدید و یا استفاده از این روش برای فایلهای فعلی
اگر پیش از این پیکربندیهای خود را در یک مخزن Git
ذخیره کردهاید، در یک سیستم جدید میتوانید با مراحل زیر به این روش مهاجرت کنید:
پیش از نصب مطمئن شوید که alias
را در ریپوزیتوریتان به .bashrc
یا .zshrc
اضافه کردید.
و اینکه مخزن منبع شما پوشهای را که به عنوان git bare
استفاده میکنید نادیده میگیرد تا مشکلات عجیب و غریب برایتان پیش نیاید: echo ".cfg" >> ~/.gitignore
یا آنطور که در بالا اشاره کردم: echo "*" >> ~/.gitignore
اکنون ریپوزیتوری پیکربندیهایتان را در یک مخزن bare
در پوشهای مخفی در مسیر $HOME/.cfg
کلون کنید:
حال alias
را در شلی که باز کردهاین تعریف کنید تا بتوانید از آن استفاده کنید:
فایلهای اصلی را با استفاده از فرمان config checkout
جایگذاری کنید. من از شاخه home
در ریپوزیتوری خودم برای ذخیره این فایلها استفاده میکنم بنابر این برای من این فرمان به این شکل خواهد بود: config checkout home
. اگر شما برای سیستمهای مختلف از شاخههای مختلف استفاده میکنید دقت کنید که فایلهای درست را جایگذاری کنید.
در صورتی که پیشتر فایلهای پیکربندی مشابه در پوشه خانه سیستم داشته باشید دستور بالا اجرا نشده و خطا میدهد. باید این فایلها را از پوشه خانه پاک یا جابجا کنید. لیست کل فایلهایی که در ریپوزیتوری دارید را میتوانید با این دستور ببینید:
سپس برای دیده نشدن فایلهای ردیابی نشده این تنظیم را انجام دهید: config config --local status.showUntrackedFiles no
تبریک میگم. پس از این میتوانید فایلهایتان را این گونه مدیریت کنید:
اگر به جای تنظیم status.showUntrackedFiles
از *
در .gitignore
استفاده کردید این فرمانها به این صورت خواهند بود:
منابع:
داتفایلهای من
دیدگاهها
میتوانید دیدگاههای این پست را در ماستودون و اینجا ببینید. برای نوشتن دیدگاه خود روی لینک زیر کلیک کنید.