Academy and Foundation unixmens | Your skills, Your future
2.29K subscribers
6.67K photos
1.38K videos
1.24K files
6.16K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
مایکروسافت اخیرا برنامه‌هایی در زمینه‌ی بهبود Git Virtual File System یا با اختصار GVFS متعلق به خود داشته ‌است که شامل مرتبط ساختن Visual Studio IDE با Git و پشتیبانی آن از سوی Client‌های Third-Party می‌باشد.
https://github.com/Microsoft/GVFS
ایجاد GVFS را باید تلاش برای توسعه‌ی نسخه‌ی نرم‌افزاری سیستم کنترل Git برای پروژه‌ها و تیم‌های بسیار بزرگ، مجازی‌سازی فولدر git. و دایرکتوری کاری به شمار آورد. در Git Virtual File System تنها قسمت‌هایی از یک Repo و فایل‌ها دانلود می‌شوند که مورد نیاز توسعه‌دهندگان برنامه‌ها می‌باشد. لازم به ذکر است که این نرم‌افزار با مجازی‌سازی فایل سیستم، به ایجاد یک Back End مبتنی بر سرور و یک لایه‌ی مجازی‌سازی برای Client می‌پردازد.

در نتیجه‌ی تلاش‌های اخیر مایکروسافت، GVFS به زودی از نسخه‌ی بتای Visual Studio 2017.3 پشتیبانی خواهد نمود. در‌حال‌ حاضر این نوع فایل سیستم، با توسعه به سایر Client‌های Git توانسته به فعالیت با SourceTree Client بپردازد. به گفته‌ی Brian Harry، معاون سرویس‌های توسعه‌دهنده‌ی Cloud، پشتیبانی از Tower Client و احتمالا Gitkraken نیز در دستور کار مایکروسافت برای GVFS قرار دارد.

وی در ادامه‌ی صحبت‌های خود بیان نمود: مایکروسافت به منظور حل‌ مسائل مربوط به مقیاس‌پذیری GVFS و اصلاح نسخه‌ی نرم‌افزاری سیستم کنترل Git، با گروه‌ وسیعی از فعالان حوزه‌ی Git همکاری داشته ‌است و حتی با سایر شرکت‌های فعال در این حوزه از جمله گوگل و فیس‌بوک که از چالش‌های مشابهی در زمینه‌ی توسعه‌پذیری برخوردارند، مذاکرات مهمی داشته‌است.

مایکروسافت پشتیبانی از GVFS را به سطح Git for Windows نیز توسعه داده ‌است. بر اساس اظهارات Harry، این شرکت همچنان یک کپی اختصاصی از Git for Windows را در اختیار دارد اما در تلاش است تا به مرور بتواند تحولات را تنها بر روی سیستم اصلی پیاده نماید.

مایکروسافت علاوه بر موارد فوق، Proxy‌هایی را نیز معرفی نموده ‌است تا هنگام مواجهه با مشکلات مربوط به پهنای باند، امکان به ‌جریان ‌انداختن حجم بالایی از داده‌ها را در طول مسیرهای طولانی فراهم نماید. پروکسی Git برای GVFS می‌تواند عملیات مربوط به Offload نمودن داده‌ها در Edge را امکانپذیر سازد. طبق اظهارات Harry، مایکروسافت از Proxy‌ها برای Offload حجم بالایی از ترافیک (مانند Build Serverها) که از سرویس اصلی Visual Studio Team Services در جریان می‌باشد نیز استفاده می‌کند تا به این‌ترتیب مانع از کاهش کیفیت تجربه‌ی کاربر در زمان اوج بار‌ گردد. وی تعداد پروکسی‌های Git مایکروسافت در سطح جهان را ۲۰ عدد اعلام نمود.

نکته‌ی قابل توجه وجود یک Server Component در GVFS می‌باشد که برای فعالیت به سرویس Team Cloud Service نیاز دارد؛ به همین دلیل برای استفاده‌ی توسعه‌دهندگان از GVFS متن‌باز، ایجاد یک حساب‌کاربری Visual Studio Team Services دارای Git Repo ضرورت می‌یابد.
#git #windows #gvfs @unixmens
تنها ۳ روز دیگر تا شروع دوره باقی است
#git @unixmens
گیت (به انگلیسی: Git) یک نرم‌افزار کنترل نسخه و از مدل نرم‌افزارهای آزاد و متن‌باز برای بازنگری کد منبع توزیع شده و مدیریت منبع کد است که برای دنبال کردن تغییر فایلهای کامپیوتری و دنبال کردن کردن کارهای انجام شده روی آن‌ها توسط افراد مختلف است. هدف اولیه این نرم‌افزار برای استفاده در پروژه‌های نرم‌افزاری بوده‌است ولی می‌توان از آن تنها برای دنبال کردن تغییر فایل‌ها هم استفاده کرد.

گیت ابتدا برای توسعهٔ لینوکس توسط لینوس تروالدز به وجود آمد و اکنون پروژه‌های فراوانی از آن الهام گرفته‌اند. هر دایرکتوری کاری در گیت یک مخزن کامل با تاریخچهٔ کامل تغییرها و قابلیت بازنگری آن‌ها است و برای کار با آن نیازی به دسترسی به شبکه یا سرور مرکزی وجود ندارد.

گیت یک نرم‌افزار آزاد است که تحت عنوان جی‌پی‌ال نسخه ۲ توزیع شده‌است.

🔅دسته بندی:#Tool

🔅دستور نصب:

sudo apt install git-all

از ابزار های گرافیکی تحت ور میتوان به gitlab اشاره کرد
#git @unixmens
با دستور git-cherry-pick آشنا شویم :


در واقع git cherry-pick یک دستور در Git است که برای انتخاب یک یا چند کامیت (commit) خاص از یک شاخه (branch) و اعمال آن‌ها در شاخه فعلی استفاده می‌شود. به بیان ساده، این دستور به شما اجازه می‌دهد تا تغییرات مشخصی را از تاریخچه گیت انتخاب کرده و در شاخه‌ای دیگر اعمال کنید.


چرا از git cherry-pick استفاده کنیم؟

1. انتقال تغییرات خاص بدون ادغام کامل: گاهی اوقات لازم است فقط یک یا چند تغییر مشخص را از یک شاخه به شاخه دیگری منتقل کنید، بدون اینکه همه تغییرات شاخه مبدا را ادغام کنید. git cherry-pick این امکان را فراهم می‌کند.

2. رفع باگ‌ها در چند شاخه: اگر یک باگ در یک شاخه برطرف شده و نیاز است همان رفع باگ در شاخه‌های دیگر هم اعمال شود، می‌توانید از git cherry-pick استفاده کنید.

3. کنترل دقیق بر تغییرات : برخلاف دستور git merge که همه تغییرات یک شاخه را ادغام می‌کند، با استفاده از git cherry-pick می‌توانید به‌طور دقیق تغییرات مورد نظر خود را انتخاب و اعمال کنید.


ویژگی‌های git cherry-pick

- انتخاب دقیق: به شما این امکان را می‌دهد که فقط تغییرات مشخصی را از یک یا چند کامیت اعمال کنید.
- تاریخچه شفاف: برخلاف git merge`، که تغییرات را به‌صورت یکجا در تاریخچه گیت ثبت می‌کند، `git cherry-pick تغییرات را به‌طور جداگانه و شفاف ثبت می‌کند.
- پشتیبانی از چندین کامیت: می‌توانید چندین کامیت را به‌صورت همزمان انتخاب و اعمال کنید.


مثال‌های `git cherry-pick`

1. انتخاب یک کامیت خاص:

فرض کنید می‌خواهید یک کامیت خاص با شناسه abc123 را از شاخه feature-branch به شاخه فعلی اعمال کنید:



   git checkout main
git cherry-pick abc123


این دستور تغییرات کامیت abc123 را در شاخه main اعمال می‌کند.

2. انتخاب چندین کامیت پشت سر هم:

اگر می‌خواهید چندین کامیت پشت سر هم (برای مثال از abc123 تا def456) را انتخاب کنید:



   git cherry-pick abc123..def456


3. انتخاب چندین کامیت غیرپشت سر هم:

می‌توانید کامیت‌های غیرپشت سر هم را نیز انتخاب کنید:


   git cherry-pick abc123 def456 ghi789


4. بررسی تعارض‌ها (Conflicts):

گاهی اوقات ممکن است هنگام اجرای git cherry-pick با تعارض مواجه شوید. در این صورت، Git به شما اطلاع می‌دهد که کدام فایل‌ها تعارض دارند و شما باید آن‌ها را به‌صورت دستی حل کنید. پس از حل تعارض‌ها، دستورهای زیر را اجرا کنید:



   git add <resolved-files>
git cherry-pick --continue


به طور کلی با استفاده از git cherry-pick می‌توانید کنترل دقیقی بر تاریخچه پروژه خود داشته باشید و تغییرات دلخواه را به راحتی بین شاخه‌های مختلف انتقال دهید.

#git #branch #tip #tips #linux #devops #scv
#source #control #version #sourcecontrol

https://t.iss.one/unixmens
👍1
چگونه gitlab ominibus را نصب کنیم :


https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh



https://packages.gitlab.com/gitlab/gitlab-ee


در حقیقت GitLab یکی از محبوب‌ترین پلتفرم‌های DevOps Lifecycle Management است که تمام مراحل توسعه نرم‌افزار شامل مدیریت سورس‌کد، CI/CD، امنیت، مانیتورینگ و دپلویمنت را در یک بستر یکپارچه ارائه می‌دهد.
برای ساده‌سازی نصب و مدیریت این ابزار بزرگ، شرکت GitLab بسته‌ای به نام Omnibus GitLab عرضه کرده است. این بسته شامل تمام اجزای موردنیاز GitLab (مانند دیتابیس، وب‌سرور، Redis، Nginx و غیره) در یک پکیج واحد است و امکان راه‌اندازی سریع و مدیریت آسان را فراهم می‌سازد

ابزار GitLab Omnibus چیست؟

این ساختار Omnibus GitLab یک بسته‌ی all-in-one است که به جای نصب تک‌تک سرویس‌های موردنیاز، همه‌ی اجزا را در یک بسته‌ی مجتمع قرار داده است.
مزایای آن:

نصب سریع تنها با یک دستور (apt-get install gitlab-ee یا yum install gitlab-ee)

مدیریت ساده توسط ابزار gitlab-ctl

کاهش پیچیدگی در پیکربندی

قابلیت به‌روزرسانی یکپارچه


اجزای اصلی GitLab Omnibus

در واقع Omnibus GitLab شامل چندین سرویس حیاتی است که با هم برای اجرای کامل GitLab همکاری می‌کنند:

1. GitLab Rails (Core Application)

بخش اصلی اپلیکیشن که شامل GitLab Web، API و Backend است.



2. Nginx

به عنوان reverse proxy برای مدیریت درخواست‌های HTTP/HTTPS.



3. PostgreSQL

پایگاه‌داده اصلی برای ذخیره‌سازی کاربران، پروژه‌ها، issueها، pipelineها و داده‌های متنی.



4. Redis

برای cache و queue (Background Jobs و Sidekiq).



5. Sidekiq

برای اجرای پردازش‌های غیرهمزمان مانند pipeline jobs و ایمیل‌ها.



6. Gitaly

سرویس مدیریت repositoryها (جایگزین direct Git access).



7. Praefect (در معماری توزیع‌شده)

برای مدیریت replication در محیط‌های با چندین Gitaly.



8. GitLab Shell

مدیریت کلیدهای SSH و دسترسی Git.



9. Prometheus + Grafana

برای مانیتورینگ و مشاهده‌ی متریک‌


ویژگی‌های کلیدی معماری Omnibus

1. یکپارچگی → همه اجزا در یک پکیج و با حداقل وابستگی خارجی.


2. ماژولار → هر سرویس (Redis، PostgreSQL، Nginx و غیره) به صورت جداگانه قابل مدیریت است.


3. مقیاس‌پذیری → در نسخه‌های Advanced (مانند GitLab EE + Omnibus Cluster) می‌توان اجزا را جدا و روی سرورهای مختلف توزیع کرد.


4. امنیت → به صورت پیش‌فرض HTTPS، پیکربندی firewall و hardening‌های امنیتی فراهم است.


5. مانیتورینگ داخلی → با Prometheus و Grafana، متریک‌ها به‌صورت داخلی جمع‌آوری می‌شوند

گیتلب Omnibus ابزاری استراتژیک برای تیم‌های DevOps است که می‌خواهند بدون دغدغه نصب و پیکربندی اجزای مختلف، به سرعت یک محیط کامل GitLab را راه‌اندازی کنند.
معماری سطح بالای آن نشان می‌دهد که چگونه اجزای مختلف (وب‌سرور، دیتابیس، کش، مدیریت ریپازیتوری و مانیتورینگ) به صورت یکپارچه عمل می‌کنند تا چرخه‌ی توسعه نرم‌افزار را بهینه سازند


وقتی سازمان رشد می‌کند، معماری Omnibus تک‌سرور دیگر پاسخ‌گو نیست. در این حالت اجزای GitLab باید روی چندین سرور توزیع شوند تا:

ا. High Availability (HA) → جلوگیری از Single Point of Failure

ا. Horizontal Scaling → توانایی مدیریت حجم بالای کاربران و pipelineها

ا. Performance Optimization → پردازش همزمان حجم زیاد jobها و commitها

اجزای کلیدی در معماری Enterprise

1. Load Balancer

ورودی کلاینت‌ها (Web/SSH/API)

توزیع درخواست‌ها بین نودهای مختلف GitLab Web و GitLab Shell



2. Application Servers (GitLab Rails)

اجرای وب و API

می‌تواند در چندین نود با load balancing اجرا شود



3. Gitaly Cluster (Repository Storage)

هر repository در Gitaly نگهداری می‌شود

برای HA از Praefect استفاده می‌شود (مدیریت replication و failover)



4. Redis Cluster

برای session storage و job queue

پیکربندی Master/Replica یا Sentinel



5. PostgreSQL Cluster

پایگاه‌داده اصلی (HA با Patroni, repmgr یا Cloud Managed DB)

پشتیبانی از replication



6. Sidekiq Cluster

اجرای jobهای pipeline و background taskها

می‌تواند به صورت توزیع‌شده روی چند نود اجرا شود



7. Monitoring & Logging (Prometheus, Grafana, ELK)

جمع‌آوری متریک‌ها، alertها و لاگ‌ها

کارگشا هست .



#gitlab #git #devops


https://t.iss.one/unixmens