-
1. شروع به کار
- 1.1 دربارهٔ کنترل نسخه
- 1.2 تاریخچهٔ کوتاهی از گیت
- 1.3 گیت چیست؟
- 1.4 خط فرمان
- 1.5 نصب گیت
- 1.6 اولین راهاندازی گیت
- 1.7 کمک گرفتن
- 1.8 خلاصه
-
2. مقدمات گیت
- 2.1 دستیابی به یک مخزن گیت
- 2.2 ثبت تغییرات در مخزن
- 2.3 دیدن تاریخچهٔ کامیتها
- 2.4 بازگردانی کارها
- 2.5 کار با ریموتها
- 2.6 برچسبگذاری
- 2.7 نامهای مستعار در گیت
- 2.8 خلاصه
-
3. شاخهسازی در گیت
- 3.1 شاخهها در یک کلمه
- 3.2 شاخهسازی و ادغام مقدماتی
- 3.3 مدیریت شاخه
- 3.4 روند کاری شاخهسازی
- 3.5 شاخههای ریموت
- 3.6 ریبیسکردن
- 3.7 خلاصه
-
4. گیت روی سرور
- 4.1 پروتکلها
- 4.2 راهاندازی گیت در سرور
- 4.3 ساختن کلید عمومی SSH
- 4.4 نصب و راهاندازی سرور
- 4.5 دیمن گیت
- 4.6 HTTP هوشمند
- 4.7 گیتوب
- 4.8 گیتلب
- 4.9 گزینههای شخصی ثالث میزبانی شده
- 4.10 خلاصه
-
5. گیت توزیعشده
- 5.1 روندهای کاری توزیعشده
- 5.2 مشارکت در یک پروژه
- 5.3 نگهداری یک پروژه
- 5.4 خلاصه
-
6. GitHub
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. پیوست A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in Eclipse
- A1.5 Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.6 Git in Sublime Text
- A1.7 Git in Bash
- A1.8 Git in Zsh
- A1.9 Git in PowerShell
- A1.10 Summary
-
A2. پیوست B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. پیوست C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
4.6 گیت روی سرور - HTTP هوشمند
HTTP هوشمند
تا اینجا، ما از طریق SSH و git://
تصدیق هویت انجام دادیم، اما پروتکل دیگری هم وجود دارد که میتواند هر دو حالت را در آن واحد پشتیبانی کند.
راهاندازی HTTP هوشمند به طور کل فعالسازی یک اسکریپت CGI همراه گیت با نام git-http-backend
روی سرور است.
این CGI، مسیر و هدری را که با git fetch
یا git push
به یک HTTP URL ارسال شدهاند، میخواند و تعیین میکند که
آیا کلاینت میتواند بر بستر HTTP ارتباط برقرار کند یا خیر (که پاسخ برای هر کلاینت نسخه 1.6.6 بالاتر بله است).
اگر CGI ببنید که کاربر هوشمند است به صورت هوشمند با او ارتباط برقرار میکند؛ در غیر این صورت به رفتار جاگیزین غیرهوشمند
باز میگردد (بنابراین سازگار با کلاینتهای قدیمی است).
اجازه دهید تا گام به گام این راهاندازی خیلی ابتدایی را دنبال کنیم. ما این را با آپاچی، به عنوان سرور CGI، انجام خواهیم داد. اگر آپاچی را نصب ندارید، میتوانید روی یک سیستم لینوکسی با دستوری مانند این آنرا نصب کنید:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
این کار همچنین ماژولهای mode_cgi
، mode_alias
و mode_env
را فعال میکند که احتمالاً همه لازمه کارکرد درست این اسکریپت هستند.
همچنین نیاز خواهید داشت که گروه کاربری یونیکس (Unix user group) پوشههای /srv/git
را www-data
قرار دهید تا وب سرورتان بتواند دسترسیهای مخازن را بنویسد و بخواند، چراکه اینستنس آپاچی که اسکریپت CGI را
اجرا میکند (به صورت پیشفرض) به عنوان آن کاربر فعالیت میکند:
$ chgrp -R www-data /srv/git
سپس لازم داریم تا چند مورد را به تنظیمات آپاچی اضافه کنیم تا git-http-backend
به عنوان هندلر هر چیزی که به مسیر /git
وب سرور شما بیاید اجرا شود.
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
اگر شما متغییر GIT_HTTP_EXPORT_ALL
را حذف کنید، گیت مخازنی را به کلاینتهای احراز هویت نشده ارائه میکند که فایل git-daemon-export-ok
درون آنهاست، همانگونه که دیمن گیت این کار را میکرد.
در آخر، احتمالاً با یک بلاک تصدیق هویت مثل این خواهید خواست که به آپاچی بگویید درخواستهای git-http-backend
را مجاز بداند و به طریقی نوشتنها را احراز شده کند:
<Files "git-http-backend">
AuthType Basic
AuthName "Git Access"
AuthUserFile /srv/git/.htpasswd
Require expr !(%{QUERY_STRING} -strmatch '*service=git-receive-pack*' || %{REQUEST_URI} =~ m#/git-receive-pack$#)
Require valid-user
</Files>
آن از شما را مستلزم به ساختن یک فایل .htpasswd
خواهد کرد که شامل رمزهای عبور همهٔ کاربران تأیید شده است.
اینجا یک مثال از اضافه کردن کاربری به نام «schacon» به فایل هست:
$ htpasswd -c /srv/git/.htpasswd schacon
صدها راه برای وادار کردن آپاچی به تصدیق هویت کاربران وجود دارد، شما باید یکی را انتخاب و پیادهسازی کنید. این صرفاً سادهترین مثالی بود که ما میتوانستیم تألیف کنیم. قریب به یقین، پس از این شما خواهید خواست تا این را با پروتکل SSL هم راهاندازی کنید تا تمام این دادهها رمزنگاری باشند.
ما نمیخواهیم خیلی به جزئیات پیکربندی آپاچی بپردازیم، ازآنجایی که ممکن است شما از یک سرور متفاوت استفاده کنید یا نیازهای احراز هویتی متفاوتی داشته باشید.
مفهوم کلی این است که گیت به همراه CGI که آن را git-http-backend
مینامیم همراه است که هنگامی که صدا زده میشود تمام مذاکرات لاز برای ارسال و دریافت داده بر بستر HTTP را انجام میدهد.
این به تنهایی و توسط خودش هیچ احراز هویتی انجام نمیدهد، اما میتواند به سادگی در لایه وب سروری که آنرا صدا میزند کنترل شود.
شما میتوانید این کار را با هر وب سرور با پشتبانی از CGI انجام دهید، بنابراین سراغ موردی بروید که به بهترین نحو میشناسید.
یادداشت
|
برای اطلاعات بیشتر درباره پیکربندی تصدیق هویت در آپاچی، مستندات آپاچی را به آدرس https://httpd.apache.org/docs/current/howto/auth.html بررسی کنید. |