‫بررسی چند git server ویندوزی

git-dot-aspx

* مشکلی با فایل‌های حجیم ندارد. فقط کافی است http.postBuffer و maxRequestLength تنظیم شود.
* لازم نیست که حتماً repoها توسط خودش ایجاد شده باشد. اگر یک repo را در مسیر repoهایش قرار دهید می‌توانید از آن استفاده کنید.
* اینترفیس وبی آن فقط فهرست repoها و comment آخرین تغییر را نشان می‌دهد نه هیچ اطلاعات دیگری.
* همه repoهای آن باید پسوند ‎.git داشته باشند.
* به صورت پیش فرض anonymous است یعنی هر کسی می‌تواند clone بگیرد یا push کند.
* برای بالا بردن امنیت باید نوع Authentication را در IIS برابر Basic قرار دهید و با urlهایی شبیه به http://user:password@hostname با آن کار کنید. البته می‌توانید با هر با push/pull نام کاربری و password را هم ارسال کنید. امنیت در سطح کل repoها قابل تعریف است نه به ازای تک تک repoها. اگر در password از کاراکترهای ویژه استفاده کرده‌اید باید url را به صورت http://”user:password”@hostname استفاده کنید.

bonobo git server

* urlهای ارسالی به آن case sensitive است
* مشکل commitهای با حجم بالا دارد. با این که دستور git config http.postBuffer 524288000 یا git config –global http.postBuffer 524288000 را در client اجرا کرده و در web.config مقدار maxRequestLength را افزایش دادم باز هم نتوانستم فایل‌های بیش از مثلاً ۱۰۰ کیلوبایت را به سرور push کنم.
* به صورت پیش فرض از user/pass استفاده می‌کند. در نتیجه می‌توان از repoها حفاظت کرد.
* اینترفیس وب آن اطلاعات خیلی خوبی را ارائه می‌دهد، از جمله فهرست commitها.
* امکان تعریف کاربر و تعیین دسترسی به ازای تک تک repoها وجود دارد.

Git-Web-Access

* به هیچ وجه نتوانستم با آن کار کنم. یا من خیلی اشتباه عمل کردم یا این برنامه خیلی ناقص است.

Comments

  1. A. Karimi

    اینطور که به نظر میاد اکثر این git server ها در خصوص security ضعیف هستند؟! خود git چطور؟ مثلاً امکان سطح دسترسی بر روی یک فایل یا فولدر را می‌دهد؟

  2. afsharm

    اگه از git استاندارد و SSH استفاده کنید امنیت در حد repo بسیار عالیست (public/private key). یعنی هیچ احد الناسی نمی‌تواند به سورس شما دسترسی پیدا کرده یا آن را تغییر دهد.

    اما در همین مدل هم من هنوز ندیدم (و نیازم هم نشده) که دسترسی در داخل یک repo تعریف شود. یعنی مثلاً به یک فولدر خاصی دسترسی داده شود یا دسترسی داده نشود. به نظر می‌رسد به خاطر مدل distributed اصلاً نیازی به این مدل دسترسی نبوده است. می‌توان فرض کرد که شما به عنوان صاحب یک repo می‌توانید با pull کردن از repoهای دیگران و اعمال هر کدام از تغییرات آنها این حق انتخاب را دارید که از هر کدام آنها pull کرده یا نکرده و یا هر کدام از تغییرات هر کدام از pullها را قبول کنید یا نکنید. کلاً این موضوع نیاز به بررسی بیشتری دارد.

  3. A. Karimi

    ممنون از اطلاعات.

    درست میگی اصلاً فکر می‌کنم در سیستم Distributed پیاده سازی چنین قضیه‌ای خیلی پیچیده شود؟

  4. afsharm

    فکر نمی‌کنم به خاطر پیچیدگی باشه. احتمالاً مکانیزم دیگه‌ای برای کنترل این موضع در نظر گرفته شده. تجربه‌ای راجع بهش ندارم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *