‏نمایش پست‌ها با برچسب Subversion. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب Subversion. نمایش همه پست‌ها

۱۳۹۰/۰۷/۲۱

SVN 1.7 و حذف پوشه‌هاي .svn اضافي


يكي از ايراداتي كه عموما به SVN مي‌گيرند اين است كه «اگر پروژه‌ي ما 1000 پوشه هم داشته باشد، SVN به ازاي هر كدام، يك پوشه‌ي مخفي به نام .svn را داخل آن‌ها ايجاد مي‌كند و ما اين رو دوست نداريم!». خبر خوب اينكه اين طراحي قديمي، با ارائه SVN 1,7 كلا برطرف شده و اكنون SVN همانند اكثر ورژن كنترل‌هاي ديگر فقط يك پوشه مديريتي را در ريشه‌ي اصلي پروژه‌ي شما ايجاد مي‌كند. به علاوه اينبار از يك بانك اطلاعاتي سريع SQLite هم جهت ذخيره سازي اطلاعات متاديتا مورد نياز خود كمك مي‌گيرد.


نحوه‌ي ارتقاء به اين نگارش جديد هم بسيار ساده است:
اگر از VisualSVN Server استفاده مي‌كنيد، روي گره Repositories در كنسول مديريتي آن كليك راست كرده و سپس از طريق گزينه‌ي All tasks ، عمليات Upgrade repositories format را انتخاب كنيد. در اينجا مي‌شود مخزن‌هاي موجود مورد نظر را انتخاب كرده و ارتقاء داد.


سپس اگر از TortoiseSVN استفاده مي‌كنيد، جايي داخل پوشه جاري پروژه، كليك راست كرده و گزينه‌ي "SVN upgrade working copy" را انتخاب كنيد. بديهي است جهت دسترسي به اين قابليت جديد بايد SVN 1.7 (كه به همراه VisualSVN Server 2.5 هم ارائه شده) و TortoiseSVN 1.7 را پيشتر نصب كرده باشيد.



۱۳۹۰/۰۶/۰۸

تهيه فيد از تغييرات SVN


كتابخانه‌ي iTextSharp 5.1.2 هفته‌ي قبل منتشر شده و ... من هر چقدر سايتي، بلاگي جايي را جستجو كردم كه خلاصه‌اي از تغييرات انجام شده آن‌را گزارش دهد، چيزي نيافتم. ولي خوب، مطابق روال متداول كتابخانه‌هاي سورس باز، حداقل مي‌توان به change log مرتبط با سورس كنترل آن‌ها مراجعه كرد. مثلا:


البته اين هم خوب است ولي اي‌كاش مي‌شد مثلا يك فيد هم از اين تغييرات تهيه كرد. يك سري از سايت‌هاي هاستينگ مثل CodePlex و GitHub يك چنين فيدهايي را دارند. اما به نظر SourceForge از اين لحاظ اندكي ضعيف است.
سايت روسي زير مي‌تواند با گرفتن آدرس يك مخزن كد SVN (براي مثال: https://itextsharp.svn.sourceforge.net/svnroot/itextsharp/trunk/ ) يك فيد RSS از آن تهيه كند:


در همين راستا برنامه‌ي CommitMonitor هم موجود است.



۱۳۹۰/۰۲/۲۹

چگونه از SVN جهت به روز رساني يك سايت استفاده كنيم؟


اين سناريو رو در نظر بگيريد:
وب سرور ما در همان محلي قرار دارد كه SVN Server نصب شده است.
مي‌خواهيم به ازاي هربار Commit تيم به مخزن SVN ما، سايت ارائه شده توسط وب سرور نيز به صورت خودكار به روز شود.
چه بايد كرد؟!

احتمالا خيلي‌ها تصور مي‌كنند كه امكان پذير نيست؛ چون مخزن SVN موجود در سرور، ساختار خودش را دارد و همانند فايل‌هاي يك پروژه معمولي نگهداري نمي‌شود.
براي انجام اينكار چندين روش موجود است، كه تمام آن‌ها به مفهوم hooks در SVN گره خورده است. هرچند hook به معناي قلاب است، اما در اينجا معناي تريگر را دارد. شبيه به تريگرهاي SQL Server : پيش يا پس از انجام كار يا رخداد مشخصي، فلان كار را انجام بده. (براي اطلاعات بيشتر مي‌توانيد به فصل hooks در اين كتابچه مراجعه كنيد: (+))
در ميان اين قلاب‌هاي موجود، مي‌توان از قلاب post-commit جهت به روز رساني يك سايت پس از هر هماهنگ سازي با مخزن SVN استفاده كرد. پيشنهاد من به تمام كساني كه مي‌خواهند كار با SVN را شروع كنند استفاده از برنامه رايگان Visual SVN Server است. اين برنامه سازگاري فوق العاده‌اي با محيط ويندوز دارد (از لحاظ تعريف سطح دسترسي‌ها). همچنين تعريف hooks را هم به شدت ساده كرده است. فقط كافي است روي يك مخزن كد تعريف شده در Visual SVN Server كليك راست كرده و در برگه‌ي باز شده، تنظيمات سطوح دسترسي يا تعاريف Hooks را اضافه نمود (در اينجا اعمال سطوح دسترسي روي پوشه‌ها يا روي فايل‌ها نيز به همان شكل با كليك راست و كم و زياد كردن كاربران ميسر است؛ همانند دادن دسترسي بر اساس امكانات NTFS و اكتيودايركتوري).

بنابراين به صورت خلاصه:
  • فرض بر اين است كه مخزن كد SVN ايي را بر روي سرور راه اندازي كرده‌ايد. همچنين پوشه‌اي را كه مي‌خواهيد ريشه سايت باشد، مثلا در مسير دلخواه C:\path\www قرار دارد.
  • براي شروع كار، check out بايد صورت گيرد. يا مي‌توان از TortoiseSVN استفاده كرد يا چون مخزن كد در همان سرور است، دستور زير نيز كار مي‌كند:
svn checkout file:///c:/svn/MyRepository/trunk C:\path\www
  • سپس يك فايل bat بايد درست كنيد با محتواي زير:
svn update file:///c:/svn/MyRepository/trunk C:\path\www

اين فايل bat بايد در همان قسمت تعريف post-commit hook استفاده شود.
به اين معنا كه پس از هر commit ، لطفا مسير C:\path\www را بر اساس آخرين به روز رساني‌هاي مخزن كد به صورت خودكار به روز كن. در اين حالت اگر فايلي حذف شده باشد، به صورت خودكار از ريشه سايت شما حذف مي‌شود و اگر فايل يا فايل‌هايي تغيير كرده باشند نيز سريعا به روز رساني آن‌ها انجام خواهد شد.
در روش svn update ، پوشه‌هاي مخفي svn نيز در ريشه سايت حضور خواهند داشت. وجود آن‌ها هم الزامي است زيرا update بر همين اساس كار مي‌كند.
  • اگر مي‌خواهيد اين پوشه‌هاي مخفي وجود نداشته باشند از دستور svn export استفاده كنيد. فقط دقت كنيد كه در اين حالت اگر فايلي از مخزن كد حذف شده باشد، باز هم در ريشه سايت وجود خواهد داشت. راه حلي هم كه توصيه شده، اين است كه در همان bat فايلي كه درست مي‌كنيد ابتدا دستور حذف محتويات پوشه ريشه را صادر كنيد و بعد svn export . البته بديهي است اين روش نسبت به svn update كندتر است و svn update به شدت بهينه و سريع مي‌باشد.
  • يا راه ديگر بجاي حذف كردن پوشه موجود و بعد export به آن، استفاده از برنامه‌هايي مانند Robocopy است كه مي‌توانند عمليات همگام سازي را هم انجام دهند. در اين حالت محتواي فايل bat شما شبيه به دستورات زير خواهد شد:
svn checkout file:///c:/svn/MyRepository/trunk C:\temp\Site1 >> output.log
robocopy C:\temp\Site1 C:\path\www *.* /S /XF *.cs *.tmp *.sln *.csproj *.webinfo /XD .svn _svn /PURGE >> output.log

به اين معنا كه پس از هر commit‌ به مخزن كد (با توجه به تعريف قلاب ذكر شده)، ابتدا يك svn checkout در يك پوشه موقتي (خارج از ريشه اصلي سايت) انجام گرديده و سپس برنامه robocopy يا موارد مشابه آن وارد عمل شده و تغييرات را با ريشه اصلي هماهنگ مي‌كنند (در اينجا مي‌توان مشخص كرد چه فايل‌هايي با پسوندهاي مشخص، با ريشه سايت هماهنگ نشوند).

در كل همان روش svn update به نظر سريعتر و مقرون به صرفه‌تر است. اگر از IIS استفاده مي‌كنيد، به صورت پيش فرض كسي نمي‌تواند محتواي پوشه‌اي را با وارد كردن آدرس آن در مرورگر بررسي كند، همچنين IIS فايل‌هايي را كه نمي‌شناسد (پسوند از پيش تعريف شده‌اي در بانك اطلاعاتي آن ندارند)، سرو نمي‌كند و در صورت درخواست آن‌ها، خطاي 404 يا "پيدا نشد" به كاربر نهايي ارائه خواهد شد.

۱۳۹۰/۰۲/۱۳

تهيه يك Clone از مخزن كدي در گوگل كد


براي مثال پروژه "unhaddins" را در نظر بگيريد. اين پروژه يك سري افزونه را جهت كار ساده‌تر با NHibernate ارائه داده است. براي مثال چگونه با WPF يا WCF و امثال آن بتوان به سادگي با NHibernate ارتباط برقرار كرد. اين پروژه خروجي قابل دريافتي ندارد؛ به عبارتي يك سري سورس كد است. دريافت يك مخزن كد هم كه از گوگل كد در اين سمت مشكل است ... اما راه بهتري هم وجود دارد. يكي از خواص كار با سورس كنترل‌ها، امكان تهيه يك clone از يك مخزن كد است. تمام پروژه‌هاي موجود در گوگل كد هم به اين شكل با SVN در دسترس هستند:
http://someproject.googlecode.com/svn/trunk/
كه به جاي someproject ، نام پروژه مورد نظر قرار خواهد گرفت.

براي نمونه، در سايت https://bitbucket.org ثبت نام كنيد. سپس گزينه ايجاد يك مخزن جديد را انتخاب كرده:



و در صفحه‌ي باز شده، گزينه‌ي Import from Subversion را انتخاب كنيد:



در اينجا Url خواسته شده بايد شبيه به همان آدرس trunk فوق باشد و اگر تيك private فعال باشد (كه هست)،‌ ديگران امكان دسترسي به مخزن كد شما را نخواهند داشت. البته اين تنظيم پس از دريافت، در برگه‌ي Admin مخزن ايجاد شده نيز قابل تغيير است.

به علاوه سايت github.com هم هر چند بر اساس Git كار مي‌كند، اما امكان تهيه يك كپي مطابق اصل از يك مخزن كد SVN را هم دارد؛ به شرح زير:

يك اكانت رايگان در GitHub درست كنيد. بعد يك مخزن خالي جديد را ايجاد كرده و در همان صفحه روي لينك Import a Subversion Repository كليك كنيد و آدرس svn مورد نظر را بدهيد.

البته GitHub در دريافت پروژه unhaddins موفق عمل نكرد، اما bitbucket خيلي سريع كل آن‌را دريافت نمود.

۱۳۸۹/۱۲/۱۲

هديه نوروزي وبلاگ


اين آخرين مطلب ارسالي بنده در سال 1389 است. اميدوارم مطالب آن براي شما مفيد بوده باشد. خبر باز شدن سايت tekPub را حتما در اين سايت مطالعه كرده‌ايد كه با مشكلاتي همراه بود و بعيد مي‌دونم كسي از داخل كشور تونسته باشه از اين فرصت كوتاه مهيا استفاده‌ كنه. دو سري از اين ويديوها، براي شما روي 14 سرور mirror گرفته‌ شده كه فارغ از هر گرايش و صنفي به درد تمام دست اندركاران اين صنعت‌ مي‌خورد:



سال خوبي داشته باشيد،
خدانگهدار

۱۳۸۹/۱۱/۲۶

‫دریافت کل یک مخزن SVN به کمک برنامه نویسی


تمام قابليت‌هاي موجود در SVN به كمك برنامه نويسي هم قابل دسترسي هستند. براي مثال تهيه خروجي از يك مخزن SVN به همراه تمامي فايل‌ها و ساختار آن. SVN به زبان C نوشته شده است و API آن نيز مبتني بر همين زبان است اما يك سري محصور كننده براي استفاده از آن در ساير زبان‌هاي برنامه نويسي هم موجود است. براي مثال معروفترين آن‌ها جهت استفاده به كمك دات نت فريم ورك كتابخانه‌ي SharpSVN است. پس از دريافت و افزودن ارجاعي به اسمبلي آن، چند سطر ذيل كار دريافت يك مخزن SVN را به صورت تمام و كمال انجام خواهد داد:

using SharpSvn;
...
using (var sc = new SvnClient())
{
var target = SvnTarget.FromUri(new Uri("http://someproject.googlecode.com/svn/trunk/"));
var finalSaveToDir = "somepath ..."; //Note: this path should not exist
sc.Export(target, finalSaveToDir);
}

نمونه‌اي از كاربردها:
- راه اندازي يك سايت براي دريافت ساده‌تر مخازن كد براي مثال Google-code يا source forge و امثال آن.

۱۳۸۹/۰۹/۲۲

چگونه از CodePlex به عنوان مخزني جهت ذخيره سازي كدهاي سايت يا وبلاگ خود استفاده كنيم؟


به شخصه اعتقادي ندارم كه جهت مديريت كار رايگاني كه انجام مي‌شود از امكانات غير رايگان استفاده كرد. تابحال براي ذخيره سازي كدهاي منتشر شده در اين وبلاگ از persiangig تا googlepages مرحوم تا رپيدشير تا ... استفاده كرده‌ام. نه امكان ليست كردن سريع آن‌ها موجود است و نه مشخص است كه چه تعدادي از آن‌ها هنوز وجود خارجي داشته و از سرورهاي ياد شده پاك نشده‌اند. اخيرا تعدادي وبلاگ برنامه نويسي را يافته‌ام كه از سايت CodePlex به عنوان مخزني براي ذخيره سازي كدها و مثال‌هاي منتشر شده در وبلاگ خود استفاده مي‌كنند. اين كار چند مزيت دارد:
- رايگان است (فضا، پهناي باند، اسكريپت و غيره)
- به صورت تضميني تا 10 سال ديگر هم پابرجا است.
- درب آن به روي كاربران ايراني باز است (برخلاف مثلا سايت googlecodes يا رفتار اخير سورس فورج و غيره، سايت CodePlex در اين چندسال رويه ثابتي داشته است)
- امكان مشاهده‌ي ليست تمامي كدهاي منتشر شده‌ موجود است.
- امكان ثبت توضيحات كنار هر كد منتشر شده نيز وجود دارد.
- امكان دريافت يكجاي آن‌ها با توجه به استفاده از ابزارهاي سورس كنترل مهيا است.
- امكان دريافت بهينه‌ي موارد جديد هم براي كاربران وجود دارد. كاربري كه يكبار با استفاده از ابزارهاي سورس كنترل، كدهاي موجود را دريافت كرده، در بار بعدي دريافت اطلاعات، تنها موارد تغيير كرده يا جديد را دريافت خواهد كرد و نه تمام اطلاعات كل مخزن را از ابتدا تا به امروز.
- امكان مشاهده‌ي آمار دريافت‌ها، مراجعات، سايت‌هايي كه به شما لينك داده‌اند و غيره فراهم است.
- امكان دعوت كردن از افراد ديگر نيز جهت به روز رساني مخزن كد تدارك ديده شده است.
- كليه اعضاي CodePlex بدون نياز به عضويت در گروه مخزن كد شما، مي‌توانند جهت تكميل يا اصلاح كار شما patch يا وصله ارسال كنند.
و ...

اما براي استفاده از اين امكانات نياز است حداقل اطلاعاتي را در مورد كار با ابزارهاي سورس كنترل داشت، كه خلاصه‌ي مختصر و مفيد آن‌را در ادامه ملاحظه خواهيد نمود:
0 - دريافت و نصب برنامه‌ي TortoiseSVN
1- ثبت نام در سايت CodePlex
رايگان است.

2- ايجاد يك پروژه‌ي جديد


كه به همراه وارد كردن مشخصات اوليه آن است:


تنها نكته‌ي مهم آن انتخاب سورس كنترل Team foundation server و سپس Subversion است چون مي‌خواهيم با استفاده از TortoiseSVN كار به روز رساني اطلاعات را انجام دهيم.

3- انتخاب مجوز براي پروژه در برگه‌ي License پروژه ايجاد شده

تا مجوزي را براي پروژه انتخاب نكنيد، مجوز ارائه‌ي عمومي آن‌را نخواهيد يافت. در مورد مقايسه‌ي مجوز‌هاي سورس باز لطفا به اين مطلب مراجعه كنيد.

4- checkout كردن سورس كنترل
ابتدا به برگه‌ي source code پروژه مراجعه كرده و بر روي لينك subversion در كنار صفحه كليك كنيد.

در صفحه‌ي باز شده مشخصات اتصال به مخزن كد را جهت به روز رساني آن مشاهده خواهيد نمود.
اكنون جهت استفاده از آن يك پوشه‌ي مشخص را در سيستم خود براي قرار دادن فايل‌ها و ارسال آن به مخزن كد ايجاد كنيد. مثلا به نام SiteRepository . سپس جايي داخل اين پوشه، كليك راست كرده و گزينه‌ي SVN Checkout را انتخاب كنيد:


در صفحه‌ي باز شده آدرس svn مربوط به پروژه خود را وارد نموده و بر روي Ok كليك كنيد:



در صفحه‌ي بعدي بايد نام كاربري و كلمه‌ي عبور مرتبط با حساب كاربري سايت كدپلكس خود را وارد نمائيد. همچنين بهتر است گزينه‌ي به خاطر سپاري آن‌را نيز براي سهولت كار در دفعات بعدي انتخاب كنيد:



به اين صورت يك پوشه‌ي مخفي svn در اينجا تشكيل خواهد شد كه اطلاعات مخزن كد را در خود نگهداري مي‌كند و نبايد آن‌را حذف كرد، تغيير داد، يا جابجا كرد.



5- اضافه كردن فايل‌هاي دلخواه به مخزن كد
براي اضافه كردن كدهاي مورد نظر خود، آن‌ها را به پوشه‌ي SiteRepository فوق كپي كرده و سپس بر روي آن‌ها كليك راست نموده و گزينه‌ي Add مربوط به TortoiseSVN را انتخاب كنيد:



به اين صورت تنها فايل‌هاي مورد نظر جهت اضافه شدن به مخزن كد علامتگذاري خواهند شد (ايجاد پوشه و قرار دادن فايل‌ها درون آ‌ن‌ها نيز به همين ترتيب است):



اكنون براي تكميل فرايند، جايي درون پوشه كليك راست كرده و گزينه‌ي SVN Commit را انتخاب كنيد:



در صفحه‌ي باز شده توضيحاتي را در مورد فايل‌هاي ارسالي وارد كرده و سپس بر روي دكمه‌ي OK كليك نمائيد:



پس از مدتي كار هماهنگ سازي اطلاعات با مخزن كد صورت خواهد گرفت:



همچنين آيكون فايل‌هاي مورد نظر نيز بر روي كامپيوتر شما به صورت زير تغيير خواهند كرد:



6- ارائه نهايي پروژه
فراموش نكنيد كه پس از ايجاد يك پروژه‌ي جديد، انتخاب مجوز و ارسال فايل‌هاي مورد نظر، بايد بر روي دكمه‌ي publish this project در بالاي صفحه كليك كرد. در غيراينصورت پروژه‌ي شما در روز بعد به صورت خودكار از سايت CodePlex حذف مي‌گردد:




براي نمونه مخزن جديد كدهاي وبلاگ جاري را در آدرس زير مي‌توانيد مشاهده كنيد:


در دفعات آتي، تنها تكرار مرحله 5 يعني كپي كردن فايل‌هاي مورد نظر به پوشه‌ي SiteRepository، سپس Add و در نهايت Commit آن‌ها كفايت مي‌كند و نيازي به تكرار ساير مراحل نيست. عمليات هماهنگ سازي با مخزن كد هم بسيار بهينه است و تنها فايل‌هايي كه اخيرا اضافه شده و هنوز ارسال نشده‌اند، Commit خواهند شد.
كاربران نهايي هم يا از طريق اينترفيس تحت وب سايت مي‌توانند از فايل‌هاي شما استفاده كنند و يا روش ديگري هم براي اين منظور وجود دارد (همان Checkout كردن ياد شده و سپس هر بار انتخاب گزينه‌ي SVN update بجاي Commit جهت دريافت فايل‌هاي جديد و نه كل مخزن كد به صورت يكجا).

۱۳۸۹/۰۸/۲۷

مديريت كار تيمي با SQL Server


پس از انتشار جزوه‌ي SVN در حدود دو سال قبل، ايميل در اين مورد زياد داشتم. يكي از سؤالات هم اين بود كه: "چگونه از SVN جهت مديريت نگارش‌هاي مختلف يك بانك اطلاعاتي اس كيوال سرور در يك تيم استفاده كنيم؟ (منظور مديريت schema است)" و من هم پاسخ مناسبي براي اين مورد نداشتم چون كلاينت‌هاي SVN حداقل با Management studio يكپارچه نمي‌شود (بر خلاف ابزارهاي موجود براي VS.NET مانند VisualSVN ، AnkhSVN و غيره). صد البته مي‌شود از آن همانند اعمال نگارش به يك فايل Text معمولي مانند فايل‌هاي SQL استفاده كرد، اما خوب ...

و خبر خوب اينكه شركت معظم RedGate چند روز قبل يك كتاب رايگان را در اين مورد منتشر كرده است:



سرفصل‌هاي اين كتاب
Chapter 1: Writing Readable SQL
Chapter 2: Documenting your Database
Chapter 3: Change Management and Source Control
Chapter 4: Managing Deployments
Chapter 5: Testing Databases
Chapter 6: Reusing T-SQL Code
Chapter 7: Maintaining a Code Library
Chapter 8: Exploring your Database Schema
Chapter 9: Searching DDL and Build Scripts
Chapter 10: Automating CRUD
Chapter 11: SQL Refactoring

دريافت

۱۳۸۸/۰۹/۱۸

انتقال SVN به يك سيستم جديد


در راستاي مهاجرت به ويندوز 7، كار نصب و راه اندازي SVN و كلاينت‌هاي آن بايد مجددا انجام مي‌شد. اگر براي بار اول است كه به مبحث SVN برخورد مي‌كنيد، مطالعه اين جزوه توصيه مي‌شود. مطالب ذيل براي افرادي مفيد است كه قصد انتقال سيستم SVN موجود خود را به مكان و يا سيستم عامل ديگري در اسرع وقت دارند.

الف) دريافت و نصب Visual SVN server
يا مي‌توان SVN خالص را از سايت آن دريافت كرد و يا جهت سهولت كار و همچنين دسترسي به يك كنسول مديريتي مي‌توان برنامه‌ي رايگان Visual SVN server را از آدرس زير دريافت و نصب كرد:

پس از نصب، ابتدا بايد يا كاربر جديدي را جهت استفاده از منابع آن تعريف كرد و يا از نحوه‌ي اعتبار سنجي يكپارچه با ويندوز هم مي‌توان استفاده كرد كه من از اين روش دوم استفاده مي‌كنم (شكل زير، كليك راست بر روي نود اصلي visual SVN server و سپس انتخاب خواص و مراجعه به برگه‌ي اعتبار سنجي آن):



ب)دريافت و نصب TortoiseSVN

نصب آن نكته‌ي خاصي ندارد. اما يك سري نكته‌ي ريز پس از نصب آن بهتر است رعايت شود كه در ادامه ذكر مي‌شود:

ج) دريافت و نصب برنامه‌ي WinMerge
برنامه‌ي Diff پيش فرض TortoiseSVN آنچنان قوي نيست. به همين جهت مي‌توان برنامه‌ي WinMerge را با آن يكپارچه كرد. براي اين منظور ابتدا آن‌را دريافت نمائيد:

اگر پس از نصب TortoiseSVN آن‌را نصب كنيد، در حين نصب پيشنهاد يكپارچه سازي با TortoiseSVN را نيز مي‌دهد. اگر ابتدا WinMerge را نصب كرده‌ايد و سپس TortoiseSVN بر روي سيستم شما نصب شده، فقط كافي است مطابق شكل زير ابتدا به قسمت Diff viewers آن مراجعه كرده و سپس با انتخاب گزينه‌ي external ، دستور خط فرمان زير را وارد نمائيد:

C:\Program Files (x86)\WinMerge\WinMergeU.exe -e -x -ub -dl %bname -dr %yname %base %mine



بديهي است مسير WinMergeU.exe مطابق مسير نصب در سيستم شما بايد تنظيم شود.

د) تنظيم مسير تحت نظر قرار گرفتن سيستم
TortoiseSVN به صورت پيش فرض كل سيستم را جهت مشاهده‌ي تغييرات تحت نظر قرار مي‌دهد كه گاهي باعث كاهش كارآيي آن خواهد شد. براي رفع اين مشكل مي‌توان مسيرهايي را كه پروژه‌هاي شما در آن قرار دارند را به آن معرفي نمود تا بار كلي سيستم كاهش يابد.



همانطور كه در شكل نيز ملاحظه مي‌كنيد، Include path مقدار دهي شده است.

ه) مشخص سازي پسوندهايي كه بهتر است از آن‌ها صرفنظر شود
به برگه‌ي general تنظيمات TortoiseSVN مراجعه كرده و در قسمت global ignore pattern آن، موارد زير را وارد نمائيد:



اين موارد شامل پروژه‌هاي دات نت، دلفي ، VC و امثال آن است و همچنين يك سري فايل بايناري كه عموما با پروژه‌هاي برنامه نويسي نيازي به ثبت نگارش آن‌ها نيست.

*.dcu *.~* dcu temp *.exe *.zip *.bkm *.ddp *.cfg *.dof *.dsk *.ini *.hlp *.gid *.bmp *.png *.gif ~* *.log bin debug release *.map *.chm *.bkf Thumbs.db *.mdb .obj *.elf *.stat *.ddp *.bpl *.map *.GID *.hlp *.opt *.dll *.raw *.BIN *.obj *.pdb *.scc Debug Release *.xml obj *.~* *.backup *.INI *.ArmLog *.KeyLog *.NanoLog *.Stats *.PreARM *.old *.drc *.*~ *.doc *.pdf *.bmp *.jpg *.MRW *.NEF *.ORF *.psd *.X3F __history *.local *.identcache *.bak Thumbs.db *.ldb *.dex *.rar DllDcu *.lck CVS cvs *.txt *.TXT *.jdbg *.HLP *.KWF *.xls *.cnt *.dsm *.dti *.tmp *.lnk *.cbk *.mes *.suo *.ncb *.user _ReSharper.* [Bb]in obj [Dd]ebug [Rr]elease *.aps *.eto


در همين برگه، اگر هنوز از VS2003 استفاده مي‌كنيد، تيك مربوط به استفاده از _svn بجاي .svn را قرار دهيد تا VS.Net با پوشه‌هاي مديريتي ذكر شده مشكل پيدا نكند.

و) نصب افزونه‌هاي SVN سازگار با VS.Net
يا مي‌توان از افزونه‌ي Visual SVN استفاده كرد (كه رايگان نيست) و يا AnkhSVN كه رايگان و سورس باز است.
ولي در كل يك مورد را بيشتر نصب نكنيد. علت هم كند شدن VS.Net است به دليل فعاليت‌هاي پشت صحنه‌ي هر كدام از اين افزونه‌ها كه زياده روي در تعداد آن‌ها گاها باعث كرش هم مي‌شود. بنابراين همان يك مورد كافي است.

ز) Import مخزن‌هاي قبلي
تا اينجا مقدمات كار فراهم شد. اكنون نوبت به import مخزن‌هاي بجا مانده از سيستم قبلي است. براي اينكار مطابق شكل زير، گزينه‌ي import existing repositories را انتخاب كرده و مسير مخزن‌هاي قبلي خود را بايد معرفي نمود (به ازاي هر كدام يكبار بايد اين عمليات صورت گيرد).



پس از انجام اين مراحل يكبار بايد سيستم reboot شود و اكنون همه چيز مثل قبل خواهد شد!


نكته:
اگر مسير ريشه مخزن‌هاي جديد با مسير آن‌ها در سيستم قبلي متفاوت است، هنگام commit كارهاي خود با خطاي زير متوقف خواهيد شد:
Commit failed (details follow): Unable to open an ra_local session to URL
Unable to open repository 'file:///C:/Repositories/tracking/trunk'




اشكالي ندارد! براي رفع آن بايد از گزينه‌ي relocate مربوط به TortoiseSVN استفاده كرد.
بر روي پوشه كاري پروژه خود كليك راست كرده، انتخاب گزينه‌ي TortoiseSVN و سپس انتخاب گزينه‌ي Relocate آن بايد صورت گيرد. در اينجا مي‌توان مسير جديد ريشه اصلي مخزن را در سيستم جديد معرفي كرد.



۱۳۸۸/۰۷/۰۷

سايت CodePlex و SVN


اگر سورس پروژه Google book downloader را بخواهيد از طريق سايت CodePlex دريافت كنيد چند صد مگابايت خواهد شد. علت هم اين است كه نويسنده پروژه تمام نگارش‌هاي قبلي را نيز در اين مكان نگهداري مي‌كند و وب سايت CodePlex هم اجازه‌ي انتخاب فقط trunk را جهت دريافت نمي‌دهد. يا همه را بايد دريافت كنيد يا هيچ.
راه ميانبري براي دريافت ساده‌تر اين پروژه نيز وجود دارد. مدت‌ها است كه امكان اتصال به اين سايت از طريق كلاينت‌هاي SVN مانند TortoiseSVN نيز فراهم شده است. فقط كافي است براي دريافت سورس كامل يك پروژه در CodePlex ، مسير زير را Checkout كرد:

https://projectname.svn.codeplex.com/svn

براي مثال جهت دريافت فقط trunk اين پروژه، مي‌توان مسير زير را checkout كرد:

https://googlebookdownloader.svn.codeplex.com/svn/trunk



۱۳۸۸/۰۱/۰۵

Ankh-SVN-2.0.6347


Ankh-SVN افزونه‌ي رايگاني جهت كار با SVN‌ درون VS.Net است. برخلاف VisualSVN كه تنها محصور كننده‌ي توانايي‌هاي TortoiseSVN است (و رايگان هم نيست)، اين افزونه‌ تمام موارد كار با SVN را از صفر بازنويسي كرده و يك افزونه‌ي مستقل و متكي به خود است.

۱۳۸۸/۰۱/۰۳

Subversion 1.6.0


نگارش جديد ساب ورژن پس از 9 ماه توسعه‌ي مداوم ، سه روز قبل منتشر شد.
بهبودهاي حاصل شده:
  • رفع بيش از 65 باگ
  • ذخيره سازي filesystem بهتر
  • اعتبار سنجي بهبود يافته
  • تشخيص تداخل‌هاي بهتر
  • و ...

البته اگر براي اولين بار است كه تحت ويندوز مي‌خواهيد ساب ورژن را نصب كنيد بهتر است از برنامه‌ي رايگان Visual SVN Server شروع كنيد. (كه تمام نيازهاي كاري شما را برآورده خواهد ساخت)
همچنين افزونه‌ي Visual SVN ويژوال استوديو نيز يكي از بهترين‌ها است (البته رايگان نيست).

۱۳۸۷/۱۱/۲۵

يكي از مزاياي استفاده از SVN در يك پروژه تك نفره


حتما لازم نيست كه در يك تيم برنامه نويسي مشغول به كار باشيد تا به يك سورس كنترل نياز پيدا كنيد. در ادامه يكي از مزاياي استفاده از SVN را با هم مرور خواهيم كرد.

چند روز قبل هنگام كار با VS.Net ، ناگهان IDE‌ كرش كرد. (از لطايف استفاده از يك دو جين افزونه و ضعف در برنامه نويسي يكي از اين‌ها كه مي‌تواند سبب ناپايدار شدن IDE شود)
پس از كرش با صفحه‌ي زير مواجه شدم!


بله! فرم برنامه كه با هزار زحمت درست شده بود، پس از كرش نابود شده بود!
در اين نوع مواقع چه بايد كرد؟ مراجعه به آخرين مجموعه‌ي بك آپ زيپ شده كه احتمالا وجود خارجي ندارد؟ ناسزا گفتن به زمين و زمان، يا ... ؟!

چون هميشه از SVN به عنوان سورس كنترل استفاده مي‌كنم، به سادگي چند كليك مشكل برطرف شد.
براي اين‌كار مي‌توان به صورت زير عمل كرد:
الف) كليك راست بر روي فايل frmMain.Designer.cs (اين فايل تعاريف رابط كاربر فرم تخريب شده را در خود دارد)
ب) سپس انتخاب گزينه‌ي Showlog از منوي افزونه‌ي Visual SVN (شكل زير)



اكنون صفحه‌ي گزارش تاريخچه‌ي ريز عمليات صورت گرفته بر روي اين فايل ظاهر مي‌شود:



در ادامه مي‌توان بر روي يكي از سطرهاي ظاهر شده در گزارش كليك راست كرد و گزينه‌ي compare with working copy را انتخاب نمود (شكل زير):



سپس ابزار diff ظاهر شده و مي‌توان به سادگي تفاوت فايل تخريب شده فعلي و فايل سالم چند نگارش قبل را مشاهده نمود:



همانطور كه در تصوير مشخص است، فايل مورد استفاده (working copy) در دو نقطه اساسي كه مربوط به اضافه كردن منوها است تخريب شده. سمت چپ نگارش قديمي است و سمت راست نگارش فعلي تخريب شده.
اكنون براي اصلاح كد تخريب شده فقط كافي است روي قسمت رنگي سمت راست كليك راست كرده و گزينه copy to right‌ را انتخاب كنيم. به اين صورت در اسرع وقت و به سادگي هر چه تمام‌تر يك فايل تخريب شده به روز اول يا حداقل به يك نگارش قبل بازگشت پيدا كرده و مشكل حل مي‌شود. (البته در اين مورد تخريب فرم، پس از انجام اصلاح فوق، يكبار بايد IDE را كاملا بست و مجددا آنرا گشود تا نتيجه ظاهر شود)



اگر به اين مبحث علاقمند شديد، به كتابچه‌ي فارسي راهنماي كار با SVN مراجعه نمائيد. (در مورد نحوه‌ي راه اندازي SVN ، افزونه‌هاي IDE هاي مختلف و موارد ديگري كه در اين مطلب كوتاه در مورد آن‌ها بحث نشد، به تفصيل توضيح داده شده است)


۱۳۸۷/۰۸/۰۲

مديريت فايلهاي يك پروژه نرم افزاري با استفاده از Subversion

كتابچه‌اي را درباره‌ي كار با SVN تهيه كرده‌ام كه از آدرس زير قابل دريافت است:
دريافت فايل

خلاصه‌اي از مقدمه كتاب:
آيا شما هم جزو آن دسته از برنامه نويساني هستيد كه هنوز به ازاي هر نگارش از برنامه، سورس‌كدهاي خود را فشرده كرده و آنها را بر اساس تاريخ آرشيو مي‌كنند؟ آيا مي‌توانيد گزارشي مقايسه‌اي را از تغييرات انجام شده در سورس كدهاي دو نگارش اخير برنامه خود ارائه دهيد؟ آيا مي‌دانيد فايلي را كه هم اكنون بر روي آن مشغول به كار هستيد در نگارش قبلي آن چه وضعيتي داشته و مقايسه آن با فايل فعلي شامل چه موارد و تغييراتي خواهد شد؟ آيا امكان بازگشت سريع و تبديل سورس كدهاي جاري برنامه را به سه نگارش قبل كه از نظر شما پايدارتر هستند، بدون اضطراب و تشنج عصبي و با سرعت هرچه تمام‌تر و بدون خطا داريد؟ آيا مي‌دانيد بر روي يك فايل ويژه پروژه چه كساني كار كرده‌اند و چه تغييراتي را اعمال نموده‌اند؟ آيا مي‌توانيد در يك تيم برنامه نويسي در كنار ساير برنامه‌نويس‌ها بر روي يك پروژه واحد كار كنيد و به‌سادگي تداخلات رخ داده را مرتفع و يا آخرين تغييرات انجام شده را ادغام نمائيد؟ آيا مي‌توانيد همواره آخرين نگارش تائيد شده پروژه را به سرعت و با دقت تمام به افراد تيم نرم افزاري خود تحويل دهيد؟ آيا مكان مجتمعي را جهت نگهداري سورس‌كدهاي پروژه‌هاي مختلف، در سازمان خود داريد؟