PDA

View Full Version : راه اندازی SVNServer ( قسمت اول)



Mojgan110
دوشنبه 25 دی 1385, 09:49 صبح
منبع : http://www.cyberrabbits.net/eli/?p=23
لینک قسمت دوم :
http://www.cyberrabbits.net/eli/?p=35
--------------------------------------------
کلاینت برنامه TortoiseSVN رو نصب کنید. بعد از نصب حتما کامپیوتر رو دوباره راه اندازی کنید. (چه معادل مسخره ای واسه Restart) حالا یک فولدر خالی بسازید و روی آن راست کلیک کنید. گزینه های اضافه شده را ببینید. البته از همینجا میتوان Reposity ایجاد کرد (گزینه Create Reposity here...) و مثلا از SVNAdmin استفاده نکرد، ولی به این دلیل که معمولا روی سرور این برنامه قرار نیست نصب شود، روش عادی آن را توضیح میدهم که در سیستم عاملهای غیر ویندوز هم قابل اجراست. (البته طبیعی است که با نسخه سرور مربوط به همان سیستم عامل)
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/shellmenu.png
برای شروع، گزینه SVN Checkout را انتخاب کنید.
در قسمت URL of reposity آدرس https://svn.sourceforge.net/svnroot/delphisvn را وارد کنید. (من خودم برای MaNGoS از همین TortoiseSVN استفاده میکنم. این برنامه، سورس یک سرور World Of Warcraft است و میتوانید آن را از https://svn.sourceforge.net/svnroot/mangos بگیرید یعنی به جای URL این عبارت را وارد کنید. )
بعد از نوشتن طریقه نصب سرور، بیشتر درباره این برنامه و کاربردهای آن توضیح میدهم.
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/checkout.png
تعریف Env Var
اولین کاری که باید بکنید اینه که یه Envoirment Variable تعریف کنید. برای اینکار، از My Computer اصطلاحا Properties بگیرید (گاهی به نظرم مسخره میاد این معادل سازی های فارسی اما خوب همینه دیگه!!! ) برید به Advanced و بعد دکمه Envoirment Variables رو بزنید.
مهم نیست که تو قسمت مربوط به کاربر فعلی (بالا) یا مربوط به کل سیستم (پایین) دکمه New رو بزنید (اگه کامپیوتر شما قراره به نحوی چند کاربره باشه بهتره که تو قسمت System Variable این گزینه رو اضافه کنید.)
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/newenv.png
یه متغیر سیستمی اضافه کنید ، اسم متغیر SVN_EDITOR و مقدارش هم آدرس یه برنامه ویرایشگر متن ساده. توصیه منو میخواید : notepad.exe چون هم تو مسیره و آدرس نمیخواد و هم اینکه همه جا هست! اگه خواستید از یه برنامه دیگه استفاده کنید حتما باید در نظر داشته باشید تو آدرسش فاصله نباشه و آدرس ۸.۳ (شبیه داس) رو باید وارد کنید. مثلا C:\Program Files نمیتونه باشه و باید باشه یه چیزی شبیه این C:\Progra~۱ که اون ۱ خودش حکایت عجیبی داره!!! به هر حال همون Notepad انتخاب خوب و کافیه (مگه آخه چی کارش داریم؟؟ http://www.cyberrabbits.net/eli/wp-includes/images/smilies/icon_smile.gif )
برای امتحانش هم توی Run بزنید %SVN_EDITOR% و اگه برنامه مورد نظرتون باز شد یعنی درسته.
نصب سرور و تنظیمات Reposity

گام بعدی اینه که اون سرور رو که لینکشو تو پست قبلی دادم نصب کنید. (برای من svn-۱.۴.۲-setup.exe ممکنه ورژن نسخه ای که شما گرفتید متفاوت باشه. ) بعد از نصب دوباره به قسمت Envoirment Variables برید و در قسمت متغیر های سیستمی Path رو پیدا کنید. دکمه Edit رو بزنید و ببینید آیا مسیر نصب برنامه تو این لیست هست یا نه. اگر نبود، یه ; به آخر عبارت اضافه کنید و آدرس فولدر Bin برنامه رو اضافه کنید مثلا "C:\Program Files\Subversion\bin;" سمی کالون باید اول و آخرش باشه. برای اینکه مطمئن بشید درست عمل کردید توی Cmd تایپ کنید Path بعد ببینید آدرس فولدر Bin برنامه تو لیست هست یا نه.
حالایه فولدر تو یه جای امن!! از کامپیوترتون درست کنید، جایی که مطمئن باشید قرار نیست هیچ فایل بهش اضافه بشه یا حذف بشه (به صورت اتفاقی یا عمدی). چون قراره Reposity شما باشه . بهتره آدرس این فولدر فاصله نداشته باشه چون در نهایت باید آدرس کوتاهش رو پیدا کنید و به دردسرش نمی ارزه. علاوه بر اون بهتره اسم اون فولدر و فولدر های بالاترش از ۸ حرف بیشتر نباشه. مثلا یه چیزی شبیه D:\SVNROOT
حالا تو Command Prompt یا هر جای دیگه ای که میتونید، این برنامه رو اجرا کنید :




کلاینت
برنامه TortoiseSVN رو نصب کنید. بعد از نصب حتما کامپیوتر رو دوباره راه اندازی کنید. (چه معادل مسخره ای واسه Restart) حالا یک فولدر خالی بسازید و روی آن راست کلیک کنید. گزینه های اضافه شده را ببینید. البته از همینجا میتوان Reposity ایجاد کرد (گزینه Create Reposity here...) و مثلا از SVNAdmin استفاده نکرد، ولی به این دلیل که معمولا روی سرور این برنامه قرار نیست نصب شود، روش عادی آن را توضیح میدهم که در سیستم عاملهای غیر ویندوز هم قابل اجراست. (البته طبیعی است که با نسخه سرور مربوط به همان سیستم عامل)
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/shellmenu.png
برای شروع، گزینه SVN Checkout را انتخاب کنید.
در قسمت URL of reposity آدرس https://svn.sourceforge.net/svnroot/delphisvn را وارد کنید. (من خودم برای MaNGoS از همین TortoiseSVN استفاده میکنم. این برنامه، سورس یک سرور World Of Warcraft است و میتوانید آن را از https://svn.sourceforge.net/svnroot/mangos بگیرید یعنی به جای URL این عبارت را وارد کنید. )
بعد از نوشتن طریقه نصب سرور، بیشتر درباره این برنامه و کاربردهای آن توضیح میدهم.
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/checkout.png
تعریف Env Var
اولین کاری که باید بکنید اینه که یه Envoirment Variable تعریف کنید. برای اینکار، از My Computer اصطلاحا Properties بگیرید (گاهی به نظرم مسخره میاد این معادل سازی های فارسی اما خوب همینه دیگه!!! ) برید به Advanced و بعد دکمه Envoirment Variables رو بزنید.
مهم نیست که تو قسمت مربوط به کاربر فعلی (بالا) یا مربوط به کل سیستم (پایین) دکمه New رو بزنید (اگه کامپیوتر شما قراره به نحوی چند کاربره باشه بهتره که تو قسمت System Variable این گزینه رو اضافه کنید.)
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/newenv.png
یه متغیر سیستمی اضافه کنید ، اسم متغیر SVN_EDITOR و مقدارش هم آدرس یه برنامه ویرایشگر متن ساده. توصیه منو میخواید : notepad.exe چون هم تو مسیره و آدرس نمیخواد و هم اینکه همه جا هست! اگه خواستید از یه برنامه دیگه استفاده کنید حتما باید در نظر داشته باشید تو آدرسش فاصله نباشه و آدرس ۸.۳ (شبیه داس) رو باید وارد کنید. مثلا C:\Program Files نمیتونه باشه و باید باشه یه چیزی شبیه این C:\Progra~۱ که اون ۱ خودش حکایت عجیبی داره!!! به هر حال همون Notepad انتخاب خوب و کافیه (مگه آخه چی کارش داریم؟؟ http://www.cyberrabbits.net/eli/wp-includes/images/smilies/icon_smile.gif )
برای امتحانش هم توی Run بزنید %SVN_EDITOR% و اگه برنامه مورد نظرتون باز شد یعنی درسته.
نصب سرور و تنظیمات Reposity

گام بعدی اینه که اون سرور رو که لینکشو تو پست قبلی دادم نصب کنید. (برای من svn-۱.۴.۲-setup.exe ممکنه ورژن نسخه ای که شما گرفتید متفاوت باشه. ) بعد از نصب دوباره به قسمت Envoirment Variables برید و در قسمت متغیر های سیستمی Path رو پیدا کنید. دکمه Edit رو بزنید و ببینید آیا مسیر نصب برنامه تو این لیست هست یا نه. اگر نبود، یه ; به آخر عبارت اضافه کنید و آدرس فولدر Bin برنامه رو اضافه کنید مثلا "C:\Program Files\Subversion\bin;" سمی کالون باید اول و آخرش باشه. برای اینکه مطمئن بشید درست عمل کردید توی Cmd تایپ کنید Path بعد ببینید آدرس فولدر Bin برنامه تو لیست هست یا نه.
حالایه فولدر تو یه جای امن!! از کامپیوترتون درست کنید، جایی که مطمئن باشید قرار نیست هیچ فایل بهش اضافه بشه یا حذف بشه (به صورت اتفاقی یا عمدی). چون قراره Reposity شما باشه . بهتره آدرس این فولدر فاصله نداشته باشه چون در نهایت باید آدرس کوتاهش رو پیدا کنید و به دردسرش نمی ارزه. علاوه بر اون بهتره اسم اون فولدر و فولدر های بالاترش از ۸ حرف بیشتر نباشه. مثلا یه چیزی شبیه D:\SVNROOT
حالا تو Command Prompt یا هر جای دیگه ای که میتونید، این برنامه رو اجرا کنید :


svnadmin create "D:\SVNROOT"یا اینکه روی اون فولدر کلیک راست کنید و از منوی TortoiseSVN گزینه Create Reposity here... را انتخاب کنید.
حالا اون فولدر رو باز کنید و میبینید که یه سری فایل اونجا ساخته شده. با هیچکدوم کاری نداریم مگر فولدر conf باقیشم اگه خواستید تو راهنماش نوشته شده چی هستن. سه تا فایل باید اونجا باشن. فایل svnserve.conf رو باز کنید .


### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)

### Visit http://subversion.tigris.org/ for more information.

[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the conf
### directory. If you don't specify an authz-db, no path-based access
### control is done.
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = My First Repository
معمولا باید اینجوری ویرایش بشه. دقت کنید که اون خطهایی که یه دونه # دارن رو باید از حالت کامنت در بیارید. یعنی # رو بردارید و علاوه بر اون نباید هیچ کاراکتری در اول اون خطوط نباید باشه! دو خط اول که مشخص هست چی هستن.



anon-access = none
auth-access = write

ولین خط نشون میده اگه کسی بخواد بدون کلمه رمز به فایلها دسترسی پیدا کنه چه اجازه ای داشته باشه. خط دوم میگه که کاربر با کلمه رمز چکار میتونه انجام بده. مقادیر معتبر read و write و none هستن. اینها میتونن تو فایل authz که پایینتر توضیح داده میشه، عوض شن. بهتره دسترسی anon رو none کنید.
اما خط بعدی

password-db = passwdاین خط مشخص میکنه فایلی که قراره حاوی کلمات رمز باشه کجا قرار میگیره و اسمش چیه. اگه میخواید امن باشه ، اسم فایل رو عوض کنید و اگه اینکارو میخواید به صورت وب سرور انجام بدید، دسترسی خارجی به این فایل رو ببندید. (در این مورد من فایل passwd یعنی همون فایل پیشفرض رو انتخاب کردم. ) آدرس میتونه خارج از فولدر conf هم باشه ولی باید به صورت نسبی داده بشه.

authz-db = authzاین فایل (authz) برای اینه که دسترسی کاربرها رو به مسیرهای مختلف معلوم کنید. در مورد این فایل هم توصیه های ایمنی رو رعایت کنید.
خط آخر هم فقط اسم این Reposity رو معین میکنه که هر چی دوست دارید میتونه باشه. بابن فقط برای کلاینت یک authentication namespace رو معرفی میکنه. اونو فقط وقتی که میخواد از کاربر نام کاربری و رمزبگیره نشون داده میشه.
حالا فایل passwd رو به اون اسمی که بالا انتخاب کردید تغییر نام بدید. بعد بازش کنید تا تغییرات لازم رو انجام بدید


## This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
F۰ruD = ۱۲۳۴۵۶
Admin۱ = ۱۳۵۷۹l
User۱ = rtymui
Alpha = ۶۵۴۳۲۱ کاملا مشخصه که باید چیکار کرد. کاربرهاتون رو اینجا معرفی کنید با کلمه رمزشون. یادتون باشه که اول خط معرفی کاربرها نباید کاراکتر اضافی مثل فاصله باشه.
اما فایل authz که میشه گفت کاملا اختیاری هستش. میتونید اصلا این فایل رو استفاده نکنید و با همون تنظیمات anon-access و auth-access همه چی رو حل کنید. منتها اگه میخواید بیشتر دسترسی کاربرها رو دستکاری کنید، میتونید از این فایل استفاده کنید. من تو راهنمای برنامه چیزی پیدا نکردم ولی خوب اونقدرها هم سخت نیست http://www.cyberrabbits.net/eli/wp-includes/images/smilies/icon_smile.gif



[groups]
Admins=F۰ruD,Admin۱
Users=User۱,Alpha

[/]
@Admins = rw
@Users=r

[/testpro]
@Admins = rw
Alpha = rw
User۱=r
# * =
اول تو بخش groups میتونید کاربرها رو دسته بندی کنید. بعد میتونید برای کاربرها بر روی Reposity های مختلف دسترسی های مختلف ایجاد کنید. مثلا برای /testpro میتونید ببینید که برای همه Admins (علامت @ نشون میده که این اسم یک دسته است نه یه نام کاربری) دسترسی خواندن- نوشتن داده شده. واسه کاربر Alpha هم همچنین و برای User۱ فقط دسترسی خواندن . از علامت * به معنی همه کس هم میتونید استفاده کنید و دسترسی عمومی به یه قسمت بدید.
خوب این تنظیمات Reposity.
حالا میرسیم به راه اندازی سرور. میشه اونو به صورت یه سرویس راه انداخت که برای اینکار نسخه های قدیمی تر نیاز به یه برنامه دیگه هم داشت که این نیاز بعد از نسخه ۱.۴.۰ رفع شده. اما من ترجیح میدم اون رو به صورت سرویس راه اندازی نکنم. البته هر دو تا رو توضیح میدم ولی واسه من تو یه شبکه محدود چه لزومی به فعال کردن سرویس هست؟ شما هم بهتره خودتون تصمیم بگیرید که سرویس باشه یا یه برنامه که هر زمان لازمش دارید اجراش کنید و بعد هم ببندیدش.
راه اندازی سرور
خیلی سادست. تنها کار اینه که این دستور رو اجرا کنید (از اونجا که بعد از نصب، مسیر برنامه سرور میره تو Path سیستم نیازی به دادن مسیر برای اجرای برنامه نیست.اگر هم مشکلی بود دوباره قسمت نصب رو مطالعه کنید. )





svnserve --daemon --root "D:\SVNRoot"

آرگومان اول طریقه راه اندازی رو نشون میده. چند تا مدل داره که من دو تاشو توضیح میدم باقیشم خودتون میتونید تو راهنما ببینید. آرگومان دوم پوشه ای هست که قبلا ایجاد شده. و قراره به عنوان ریشه Reposity استفاده بشه. حالا این دستور رو که اجرا کنید برنامه به صورت daemon باز میشه و شما خیلی راحت میتونید کارتون رو انجام بدید و بعد ببندیدش. منتها اگه لازمه که برنامه همیشه رو یه سیستم اجرا بشه به صورت سرویس باید اینکار رو انجام بدید




sc create SVNServer binpath= "svnserve.exe --service --root D:\SVNROOT" displayname= "Subversion Repository" depend= Tcpip

خیلی سادست. سرویس نصب میشه. دقت کنید تو این مورد خاص، در صورتی که آدرس پوشه اصلی Reposity فاصله داشته باشه یا نام هر فولدر تو مسیر از ۸ حرف بیشتر باشه دچار مشکل میشید..
برای حذف سرویس :

sc delete SVNServer اسمیه که هنگام نصب انتخاب کردیم و میتونه هر چیز دیگه ای هم باشه. displayname هم میتونه هر چیزی باشه. تو binpath آدرس برنامه داده شده منتها چون آدرس رو تو path قرار دادیم دیگه لازم نیست که فولدر و... نوشته بشه.
حالا خودتون انتخاب کنید، بسته به نیازتون کدوم حالت مناسب تره daemon یا Service
ایجاد اولین برنامه در Reposity
الان میخواهیم اولین برنامه را در Reposity ایجاد کنیم. برای اینکار نیاز به یک کلاینت SVN داریم. برنامه ای که در اول توضیح دادم، میتواند اینکار را انجام دهد، از طریق Repo-Browser (در حالی که مطمئنا سرور، از مرحله قبل در حال اجراست) در قسمت Url بنویسید : svn://localhost و دکمه OK را بزنید.
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/repobrowser.png
در صورتی که همه مراحل قبلی را درست انجام داده باشید، و اجازه دسترسی بدون نام را نداده باشید، این دیالوگ نمایش داده میشود :
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/userpass.png
در صورتی که اجازه دسترسی به غیر کاربر ها هم داده باشید این دیالوگ هنگامی که بخواهید فولدر را بسازید نمایش داده میشود ،نه الان.
کلمه رمزی که در مرحله اول انتخاب کردید وارد کنید. در بالای این دیالوگ نامی که خودتان در نظر گرفته بودید نمایش داده میشود (My First Reposity در تنظیماتی که من انجام دادم). چون اولین باریست که اینکار را انجام میدهید، هیچ زیر شاخه ای وجود نخواهد داشت. با کلیک راست بر روی شاخه svn://localhost گزینه Create Folder را انتخاب کنید و نام و توضیح مورد نظرتان را وارد کنید. فولدر ساخته میشود. (البته بعد از پرسیدن نام و کلمه رمز اگر قبلا آنها را ذخیره نکرده باشید با زدن تیک ذخیره در پایین دیالوگ)
در صورتی که نخواهیم از این روش استفاده کنیم (به هر دلیلی خصوصا اینکه ما متغیر SVN_EDITOR را هم تعریف کردیم که در صورت استفاده از این روش اصلا استفاده نخواهد شد!!!) میتوانیم از svn.exe استفاده کنیم.


svn mkdir svn://localhost/testpro

بعد از این دستور برنامه notepad یا هر ویرایشگر دیگری که به عنوان SVN_EDITOR انتخاب کرده باشید باز میشود، در خط اول توضیحات را وارد کنید، در خطوط بعدی تغییری ایجاد نکنید.
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/commit.png
با بستن برنامه ویرایشگر، برنامه برای کلمه رمز منتظر میماند. بار اول نام کاربری ،نام کاربر ویندوز در نظر گرفته میشود که اگر با نام مورد نظر شما یکی بود که فبها وگرنه Enter کنید و نام و کلمه رمز مورد نظرتان را وارد کنید. اگر عبارت "Committed revision ۱." نمایش داده شد همه چیز درست است و پایان.
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/svn.png
کار با این برنامه svn چون یک برنامه خط فرمانی است سخت است و من هم تنبل!!! خوب برای همین برمیگردم به همان TortoiseSVN دوست داشتنی.(البته اگر به هر دلیلی نمیخواهید از TortoiseSVN استفاده کنید و svn.exe را ترجیح میدهید، توصیه میکنم حتما راهنمای برنامه را مطالعه کنید. )
دوباره RepoBrowser را باز کنید. اینبار testpro به عنوان زیر شاخه وجود دارد. (در صورتی که نبود یا Repo-Browser از قبل باز بود، از دکمه های F۵ یا Ctrl+F۵ برای Refresh استفاده کنید. )
حالا روی یک پوشه خالی کلیک راست کنید، بعد گزینه Svn Checkout را بزنید (راهنمای کلاینت را در اول ببینید.) حالا آدرس svn://localhost/testpro را بدهید.فعلا هیچ فایلی وجود ندارد و شما فقط عبارت Complete at revision ۱ را خواهید دید. در پوشه مورد نظرتان، یک فولدر با نام .svn (که میتوانید نام آنرا در تنظیمات TortoiseSVN عوض کنید) ایجاد شده است. اصلا با آن پوشه کاری نداشته باشید!!!!!!
معمولا قاعده اینست که سه پوشه به نامهای trunk,branches , tags در این پوشه ایجاد شود. trunk حاوی نسخه فعلی برنامه که در حال کار کردن روی آن هستیم و tags نسخه های کامل برنامه که منتشر شده اند (مثلا نسخه ۱ یا ۲ یا هر نسخه ای که پایدار باشد) branches هم به نوعی آرشیو برنامه نویسان خواهد بود.این سه پوشه را ایجاد کنید اگر شما هم وسواس استاندارد دارید و گرنه هر طور دیگری میخواهید میتوانید پوشه ها را ایجاد کنید. در پوشه trunk ساختار برنامه خود را ایجاد کنید. مثلا یک برنامه دلفی، یا سی یا وی بی یا هر چیز دیگری. سه فولدر ایجاد شده را با هم انتخاب کنید، روی آنها کلیک راست کنید و از منوی TortoiseSVN گزینه Add را انتخاب کنید.
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/add.png
فایلهایی که لازم است اضافه شود را انتخاب کنید و تایید کنید. فعلا چیزی به سرور فرستاده نشده و تمام تغییرات بعدا و بعد از Submit به سرور ارسال میشود. در Shell ویندوز شما اینطور میبینید :
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/overlay.png
حالا روی فولدر اصلی (فولدر اول که ساختید و بعد Checkout کردید) راست کلیک کنید و گزینه SVN Commit را بزنید. (SVN Update برای بروز کردن این Reposity استفاده میشود)
http://cyberrabbits.net/eli/wp-content/uploads/2007/01/svnsubmit.png
با فشردن دکمه OK تازه این اطلاعات به سرور ارسال میشود. خوب تبریک میگم. برنامه شما به Rev ۲ رسید.
نکات زیر را در نظر داشته باشید :
هیچ فایلی در Reposity خودتان از طریق ویندوز حذف نکنید و از گزینه Delete در منوی TortoiseSVN استفاده کنید
فایلهایی که با کامپایل برنامه اضافه میشوند (مثل فایل اجرایی فایلهای Obj یا DCU ) را اصلا به Add نکنید این باعث میشود شما همیشه با هر کامپایل و بدون اینکه اصلا فایلی را تغییر داده باشید با علامت تعجب مربوط به تغییرات در پوشه مواجه شوید.
راهنمای برنامه دوست شماست!!
سوالی هست یا اشتباهی مرتکب شدم، در کامنت بنویسید تا اصلاح کنم.باقیشم واسه پست بعد! عجب غلطی کردم که اینو شروع کردم http://www.cyberrabbits.net/eli/wp-includes/images/smilies/icon_smile.gif
oti anl hkrnv k,ajl!!!
یا به زبون فارسی کیبورد :
خفه شدم انقدر نوشتم!!!

anubis_ir
دوشنبه 25 دی 1385, 10:24 صبح
این پلاگین از سیستم فوق در محیط VS.NET‌ استفاده میکنه.
http://www.visualsvn.com/start-using.html