PDA

View Full Version : کدامیک بهترند؟ CVS یا Subversion یا SourceSafe یا Team Foundation Server؟



amir_saniyan
یک شنبه 18 فروردین 1387, 14:27 عصر
سلام.

به نظر شما کدامیک از نرم‌افزارهای کنترل نگارش (Version Control) بهتر هستند؟

مقدمه:
خیلی از ما برای نگهداری از نگارش‌های مختلف برنامه‌مون از روش Copy - Paste پروژه‌ها روی هارد استفاده می‌کنیم. این روش نه تنها خیلی از حجم هارد رو هدر می‌ده بلکه ردیابی تغییراتی که تو نرم‌افزار اتفاق افتاده رو سخت می‌کنه. تو این روش فهمیدن اینکه مثلا یک کلاس کم‌کم به چه شکلی کامل شده و کدوم باگ‌هاش رفع شده خیلی سخته. حتی من بعضی برنامه‌نویس‌ها رو دیدم که اشتباها تغییرات جدیدی که باید انجام بدهند رو، روی نگارش‌های قدیمی‌تر انجام دادند و وقتی کارشون تمام شده با کمال تعجب دیدند هنوز بعضی از باگ‌هایی که قبلا رفع کرده بودند وجود داره.
حتی برخی از برنامه‌نویس‌ها از یک پروژه‌شون ده‌ها کپی روی قسمت‌های مختلف هارد دارند، که هر کدوم با بقیه نسخه‌های دیگه فرق داره و فقط خود برنامه‌نویس می‌دونه تفاوت این‌ها چیست و بعضی وقت‌ها هم خود برنامه‌نویس هم اشتباه می‌کنه.
با این مشکلات به سادگی نمی‌شه نگارش‌های مختلف یک پروژه رو نگهداری کرد و هزینه پشتیبانی نرم‌افزار هم به شکل سرسام آوری بالا می‌ره. علتش هم اینه که بیشتر تغییرات در پروژها در زمان پشتیبانی و پس از تحویل به مشتری اتفاق می‌افته.
راه حل اینه که از نرم‌افزارهای کنترل نگارش استفاده کرد. این نرم‌افزارهای توی کارهای گروهی نقش پر رنگ‌تری می‌تونند داشته باشند.

من چند تا از نرم‌افزارهای کنترل نگارش رو در پایین ذکر کردم. اصلا به نظر شما کنترل نگارش مهم هست؟ اگه هست کدام یک از نرم‌افزارها بهتره؟ اگه تجربه مفیدی در این زمینه دارید لطفا اون رو با ما در میان بگذارید.


گزینه‌ها:
(اگر روی نام نرم‌افزار کلیک کنید به وب‌سایت اون خواهید رفت)

1) CVS - Concurrent Versions System (http://www.nongnu.org/cvs/)
توضیح: http://en.wikipedia.org/wiki/Concurrent_Versions_System
- هم لینوکسی است و هم ویندوزی. یک کمی قدیمی است ولی در پروژه‌های Open Source زیاد استفاده می‌شه.

2) Subversion (http://subversion.tigris.org/)
توضیح: http://en.wikipedia.org/wiki/Subversion_%28software%29
- هم لینوکسی است و هم ویندوزی. در پروژه‌های Open Source جدید زیاد استفاده می‌شه. ظاهرا گوگل (http://code.google.com/hosting) و http://sourceforge.net (http://sourceforge.net/) از این نرم‌افزار پشتیبانی می‌کنند. هم تحت وب کار می‌کنه (با آپاچی) و هم یک نسخه بدون نیاز به وب‌سرور داره. با اینترنت هم به خوبی می‌شه با این نرم‌افزار کار کرد و از کارایی اون در شبکه استفاده نمود. تا اونجا که من کار کردم از یونیکد و فارسی هم پشتیبانی می‌کنه.

3) Microsoft Visual SourceSafe (http://msdn2.microsoft.com/en-us/vstudio/aa700907.aspx)
توضیح: http://en.wikipedia.org/wiki/Visual_SourceSafe
- خیلی خوب با ویژوال استدیو کار می‌کنه و به صورت یکپارچه در می‌آید. ظاهرا مایکروسافت اعلام کرده که آخرین نسخه اون 2005 است و دیگه این نرم‌افزار ادامه پیدا نمی‌کنه. همچنین کار با اون ساده است و تحت شبکه و برای کارهای گروهی هم مناسبه و امکانات خوبی داره.

4) Team Foundation Server (http://msdn2.microsoft.com/en-us/library/bb668991.aspx)
توضیح: http://en.wikipedia.org/wiki/Team_Foundation_Server
- کاملا حرفه‌ای است. نصب اون نیاز به Windows Server 2003 SP1 و SQL Server 2005 داره. به خوبی با ویژوال استدیو کار می‌کنه. هدف اصلی‌اش کارهای گروهی است. در عین قدرتمندی کار با اون نیز نسبتا ساده است.

موفق باشید.

vcldeveloper
یک شنبه 18 فروردین 1387, 16:49 عصر
اصلا به نظر شما کنترل نگارش مهم هست؟
بسیار بسیار زیاد! معمولا هر کدوم از این نرم افزارهایی که نام بردید، خودشون در معرفی نامه خودشون، یا در راهنمای خودشون صفحاتی را به این موضوع اختصاص دادند که چرا باید از کنترل ورژن استفاده کرد. برای همین هم من توضیح خاصی نمیدم.



کدام یک از نرم‌افزارها بهتره؟
من نظر شخصی خودم رو میگم. ممکنه دوستانی که با ابزارهای دیگه ایی کار کردند، با نظر من موافق نباشند...

CVS دیگه خیلی قدیمی شده، Open-source هم به سمت کنار گذاشتن آن میل میکنه.
شخصا از Subversion استفاده می کنم. پشتیبانی خوبی توی محیط های مختلف ازش میشه. یک سیستم ورژن کنترل برپایه فایل هست. براش فرق نمیکنه چه نوع فایلی رو بهش بدی، میخواد سورس باشه، می خواد فایل باینری باشه. با استفاده از TortoiseSVN بطرز جالبی با Windows Explorer یکپارچه میشه و همه کارهای متداول مربوط بهش رو میشه با استفاده از Context-menu مربوطه انجام داد. برای فهمیدن اینکه آیا فایلی نسبت به نسخه داخل مخزن تغییر کرده یا نه هم کافیه به آیکن فایل نگاه کنید. اگه تغییر نکرده باشه، یه تیک سبز کنارش هست، اگر حذف شده باشه، یک ضربدر قرمز، اگر تغییر کرده باشه، یک علامت تعجب قرمز. انعطاف پذیری زیادی داره و می تونید به هر شکلی که خواستید تنظیمش کنید. راهنمای خوبی داره.همونطور که خودتون هم گفتیدبا ترکیب با آپاچی، رابط تحت وب هم ارائه میکنه. جدیدا برای راحتتر شدن نصب و تنظیم آن بر روی آپاچی هم نرم افزار Open-source ایی ارائه شده که با کمک یک ویزارد خودش تنظیمات رو براتون انجام میده.
در هر حال بزرگترین حسن SVN عدم وابستگی آن به سکویی خاص، یا محیط توسعه خاص هست، به علاوه انعطاف پذیری بالا. توصیه می کنم برای امتحان هم که شده، یک بار Subversion + TortoiseSVN رو نصب کنید و خودتون امکاناتش رو ببینید. بخصوص اگه می خواید روی سیستم شخصی خودتون برای پروژه هاتون از یک سیستم کنترل ورژن استفاده کنید، حتما از این استفاده کنید، چون بدون نیاز به هیچ سرور و تشکیلات خاصی تمام امکاناتی که روی یک سرور میشه برای یک نرم افزار کنترل ورژن تصور کرد رو بهتون میده.
از SourceSafe استفاده نکردم. اما نرم افزاری که بیش از حد با یک محیط توسعه خاص یکپارچه بشه، معمولا بدرد سایر محیط ها نمیخوره. شاید اونایی که همیشه از VS استفاده می کنند ازش لذت ببرند، ولی برای منی که اکثر پروژه هام توی دلفی هست و کمتر با VS کار دارم، همچین ابزاری بدرد نمیخوره. خودتون هم که میگید دیگه توسعه داده نمیشه. احتمالا برای گروههایی که دور از هم کار می کنند هم رابط وب نداره.
Team Foundation Server رو هم باهاش کار نکردم، شاید غیر از کنترل ورژن قابلیت های دیگه ایی رو هم ارائه میکنه که استفاده ازش رو توجیه پذیر کنه، ولی اگر کارش فقط کنترل ورژن هست، با این پیش نیازهایی که داره، منطقی به نظر نمیرسه که کسی بخواد ازش استفاده کنه، به خصوص در خارج از ایران که مشتری بیچاره باید پول زیای بابت SQL Server 2005 و Windows Server 2003 بده. البته مشخصه که این هم مثل SourceSafe بدرد راهکارهای مایکروسافتی میخوره و اگر یک بار تصمیم گرفتید توی پروژه ایی از راهکار غیرمایکروسافتی استفاده کنید، کمک خاصی بهتون نمیکنه.

anubis_ir
دوشنبه 19 فروردین 1387, 07:06 صبح
اخیرا در پروژه‌های بزرگ (مثلا گوگل)، از مرکوری دارد استفاده می شود.
http://www.selenic.com/mercurial/wiki/

ly.comeng
دوشنبه 19 فروردین 1387, 14:50 عصر
بسیار بسیار زیاد! معمولا هر کدوم از این نرم افزارهایی که نام بردید، خودشون در معرفی نامه خودشون، یا در راهنمای خودشون صفحاتی را به این موضوع اختصاص دادند که چرا باید از کنترل ورژن استفاده کرد. برای همین هم من توضیح خاصی نمیدم.


من نظر شخصی خودم رو میگم. ممکنه دوستانی که با ابزارهای دیگه ایی کار کردند، با نظر من موافق نباشند...

CVS دیگه خیلی قدیمی شده، Open-source هم به سمت کنار گذاشتن آن میل میکنه.
شخصا از Subversion استفاده می کنم. پشتیبانی خوبی توی محیط های مختلف ازش میشه. یک سیستم ورژن کنترل برپایه فایل هست. براش فرق نمیکنه چه نوع فایلی رو بهش بدی، میخواد سورس باشه، می خواد فایل باینری باشه. با استفاده از TortoiseSVN بطرز جالبی با Windows Explorer یکپارچه میشه و همه کارهای متداول مربوط بهش رو میشه با استفاده از Context-menu مربوطه انجام داد. برای فهمیدن اینکه آیا فایلی نسبت به نسخه داخل مخزن تغییر کرده یا نه هم کافیه به آیکن فایل نگاه کنید. اگه تغییر نکرده باشه، یه تیک سبز کنارش هست، اگر حذف شده باشه، یک ضربدر قرمز، اگر تغییر کرده باشه، یک علامت تعجب قرمز. انعطاف پذیری زیادی داره و می تونید به هر شکلی که خواستید تنظیمش کنید. راهنمای خوبی داره.همونطور که خودتون هم گفتیدبا ترکیب با آپاچی، رابط تحت وب هم ارائه میکنه. جدیدا برای راحتتر شدن نصب و تنظیم آن بر روی آپاچی هم نرم افزار Open-source ایی ارائه شده که با کمک یک ویزارد خودش تنظیمات رو براتون انجام میده.
در هر حال بزرگترین حسن SVN عدم وابستگی آن به سکویی خاص، یا محیط توسعه خاص هست، به علاوه انعطاف پذیری بالا. توصیه می کنم برای امتحان هم که شده، یک بار Subversion + TortoiseSVN رو نصب کنید و خودتون امکاناتش رو ببینید. بخصوص اگه می خواید روی سیستم شخصی خودتون برای پروژه هاتون از یک سیستم کنترل ورژن استفاده کنید، حتما از این استفاده کنید، چون بدون نیاز به هیچ سرور و تشکیلات خاصی تمام امکاناتی که روی یک سرور میشه برای یک نرم افزار کنترل ورژن تصور کرد رو بهتون میده.
از SourceSafe استفاده نکردم. اما نرم افزاری که بیش از حد با یک محیط توسعه خاص یکپارچه بشه، معمولا بدرد سایر محیط ها نمیخوره. شاید اونایی که همیشه از VS استفاده می کنند ازش لذت ببرند، ولی برای منی که اکثر پروژه هام توی دلفی هست و کمتر با VS کار دارم، همچین ابزاری بدرد نمیخوره. خودتون هم که میگید دیگه توسعه داده نمیشه. احتمالا برای گروههایی که دور از هم کار می کنند هم رابط وب نداره.
Team Foundation Server رو هم باهاش کار نکردم، شاید غیر از کنترل ورژن قابلیت های دیگه ایی رو هم ارائه میکنه که استفاده ازش رو توجیه پذیر کنه، ولی اگر کارش فقط کنترل ورژن هست، با این پیش نیازهایی که داره، منطقی به نظر نمیرسه که کسی بخواد ازش استفاده کنه، به خصوص در خارج از ایران که مشتری بیچاره باید پول زیای بابت SQL Server 2005 و Windows Server 2003 بده. البته مشخصه که این هم مثل SourceSafe بدرد راهکارهای مایکروسافتی میخوره و اگر یک بار تصمیم گرفتید توی پروژه ایی از راهکار غیرمایکروسافتی استفاده کنید، کمک خاصی بهتون نمیکنه.


من هم موافقم،مطمئنا از استفاده از subversion همراه با TortoiseSVN پشیمون نمیشین.

Microsoft.net
جمعه 23 فروردین 1387, 20:46 عصر
Team Foundation Server به درد solution های متوسط و بزرگ میخوره از قابلیتهایی که داره میشه به تعریف task برای برنامه نویسان و گردش آن بین تیم توسط مدیر پروژه و رمانبندی Build توسط سرور در زمان های تعریف شده . به طوری که همیشه یک خروجی اجرایی از آخرین تغییرات اعمال شده داشته باشید . پشتیبانی از 2500 یوزر به صورت هم زمان و بالا بودن امنیت از این نظر که دید فایلی نسبت به سورس نداره بر خلاف VSS و SubVer و Team Coherance . خوب بنا یر این نیاز به سخت افزار و نرم افزار خاص هم داره و به درد تیم 2-3 نفره قطعا نمی خوره .
VSS هم به غیر از باگهایی که بعضی وقتها گریبانگیر سورس میشه و کل ورژن هات به هم می ریزیه ! مشکل دیگه ای نداره

Leon_pro
شنبه 31 فروردین 1387, 12:47 عصر
Visual Studio 2008 Team Suite Ver این کار رو انجام میده؟؟؟؟؟؟؟

Bayazee
دوشنبه 18 شهریور 1387, 14:33 عصر
سلام
ظاهرا bazaar یا bzr فراموش شده ! bazaar مدتی هست بسیار معروف و پر کاربرد شده . پروژه هایی چون ابونتو ، MySQL و ... دارند از این سیستم استفاده می کنند .

Bazaar is a distributed revision control system. It allows team members to branch and merge upstream code very easily.

Distributed revision control systems allow multiple people to have their own branch of a project, and merge code efficiently between them. This enables new contributors to immediately have access to the full tools that previously have been limited to just the committers to a project.



https://launchpadlibrarian.net/7095450/bazaar-large.png

ویژگی ها :

#

Friendly. Distributed version control doesn't need to be complex. Bazaar is Version Control for Human Beings. Bazaar has a natural feel because we focus on usability, particularly task efficiency.
#

Smart. Bazaar has perfect support for renaming files AND directories. This means developers can refactor without holding back because of fear of merging. It also means you can unleash your community and merge efficiently even from contributors who are radically restructuring the tree.
#

Fast. Almost every open source project can get the advanced features of Bazaar without slowing down its developers. See our impressive benchmark results across a wide range of open source projects.
#

Lightweight. No dedicated server with Bazaar installed is needed, just FTP access to a web server. A smart server is available for those requiring additional performance or security but it is not required in many cases - Bazaar 1.x over plain http performs well.
#

Just a tool. Bazaar can play a key role in helping you get from great idea to running code in the hands of end users. Tools are only part of the puzzle though so our documentation explicitly sets out to make you productive, explaining how to use Bazaar effectively, presenting best practices and insightful tips.
#

Extensible. Bazaar is designed as a Python API with a plugin system, so it is easy to embed in your tools and projects and easy to extend or integrate with existing infrastructure. Integration via XML is supported by a plugin. Whether you are a single user keeping track of configuration files or a team of 100s of people on multiple continents, Bazaar is a great choice.
#

Embeddable. A key design feature of Bazaar is support from the ground up for pluggable storage formats. One size does not fit all, particularly when new application delivery platforms - like the OLPC, iPod and Amazon's S3 - have different characteristics to traditional filesystems. If you want intelligent version control embedded into your application or content management system, Bazaar has the architecture you need.
#

Safe. Bazaar is backed by a thriving open source community and sponsored by Canonical, one of the fastest growing open source companies around. The development process follows best practices with code review of all core and community changes. Bazaar has a huge test suite (over 10,000 tests) that ensures that new features can be rapidly added without breaking existing ones. We are rapidly building the world's best VCS, delivering several dozen improvements to our adopters each and every month.
#

Free. Bazaar is available under the GPL v2 or later. If you want to embed Bazaar into your products under a different license, please contact us.

سایت رسمی: http://bazaar-vcs.org
Why Choose Bazaar : http://bazaar-vcs.org/BzrWhy
Bazaar vs Subversion: http://bazaar-vcs.org/BzrVsSvn
Bazaar vs Git : http://bazaar-vcs.org/BzrVsGit
Bazaar vs Mercurial : http://bazaar-vcs.org/BzrVsHg

Elham_gh
چهارشنبه 27 شهریور 1387, 15:58 عصر
من هم موافقم،مطمئنا از استفاده از subversion همراه با TortoiseSVN پشیمون نمیشین.

subversion و TortoiseSVN دو تا نرم افزار هستند؟ Free يا Crack شده اش هست؟

whitehat
چهارشنبه 27 شهریور 1387, 16:06 عصر
اینها هر کدام یک نرم افزار هستند و هر دو مجانی

vcldeveloper
چهارشنبه 27 شهریور 1387, 23:15 عصر
subversion و TortoiseSVN دو تا نرم افزار هستند؟هر دو Open-source هستند. SVN خودش رابط گرافیکی ارائه نمیکنه و Command-line هست. TortoiseSVN رابط گرافیکی کار با SVN در ویندوز هست. SVN روی سرور نصب میشه، TortoiseSVN هم روی کلاینت ها برای اتصال به SVN.
من خودم برای نصب SVN، از VisualSVN استفاده می کنم که خودش SVN را به اضافه Apache نصب میکنه و یک Console مدیریتی هم میده که باهاش بتونید راحت رابط وب SVN را Start یا Stop کنید. بعدش هم TortoiseSVN را نصب می کنم.

Elham_gh
چهارشنبه 03 مهر 1387, 08:38 صبح
يك سوال مهم، اين ابزار فقط كنترل تغييرات را انجام مي دهد؟؟
من ابزاري مي خوام كه نسخه هاي مختلف يك برنامه رو نگه داره و بتونه از تغييراتشون گزارش بده. آيا اين ابزار اين امكان رو به من مي ده؟

anubis_ir
چهارشنبه 03 مهر 1387, 12:17 عصر
بله. امكانات diff رو داره.

vcldeveloper
چهارشنبه 03 مهر 1387, 17:41 عصر
يك سوال مهم، اين ابزار فقط كنترل تغييرات را انجام مي دهد؟؟
من ابزاري مي خوام كه نسخه هاي مختلف يك برنامه رو نگه داره و بتونه از تغييراتشون گزارش بده. آيا اين ابزار اين امكان رو به من مي ده؟
بله، تصویر زیر نمایی از TortoiseSVN هست زمانی که روی یک فایل تحت کنترل راست کلیک کنید:

23743

فایل هایی که تیک سبز دارند، تغییر نکردند. فایلی که علامت توقف خاکستری داره، تحت ورژن کنترل نیست، فایلی که علامت تعجب قرمز داره، تغییر کرده. وقتی روش راست کلیک می کنید، TortoiseSVN گزینه های مختلفی در اختیار شما قرار میده، از جمله Diff که به کمک آن می تونید تغییرات فایل نسبت به نسخه های قبلی را بررسی کنید. TortoiseSVN ابزاری برای نمایش تغییرات فایل های متنی (مثل سورس کد) و فایل های تصویری (مثل فایل های JPG) دارد.

Elham_gh
شنبه 06 مهر 1387, 09:26 صبح
خوب یک مسئله هست. تغییرات با ورژن فرق داره. فرض کنید چند برنامه نویس دارن رو برنامه کار می کنند. هر کدوم یک سری تغییر می دن تا نسخه جدید سیستمو بدن.ممکنه 2 تاشون روی یک فایل کار کنه. حالا می خوام من بگم تا پایان این تغییرات نسخه من مثلا 2 است. حالا تغییرات نسخه 2 را با نسخه 1 به من گزارش بده

Microsoft.net
شنبه 06 مهر 1387, 18:11 عصر
خوب یک مسئله هست. تغییرات با ورژن فرق داره. فرض کنید چند برنامه نویس دارن رو برنامه کار می کنند. هر کدوم یک سری تغییر می دن تا نسخه جدید سیستمو بدن.ممکنه 2 تاشون روی یک فایل کار کنه. حالا می خوام من بگم تا پایان این تغییرات نسخه من مثلا 2 است. حالا تغییرات نسخه 2 را با نسخه 1 به من گزارش بده

اکثر برنامه های کنترل سورس از ویرایش همزمان یک فایل توسط بیش از 1 نفر رو اجازه نمیدن رخ بده مگر اینکه Data Lost رو قبول کنی . پس زمانی نفر 2 میتونه فایل رو تغییر بده که نفر 1 تغییراتش رو Commit یا به اصطلاح Checkin کرده باشه . و بعد از اون هر کسی بخواد این فابل رو ویرایش کنه چون نسخه روی سرور با نسخه اون فرد ممکنه متفاوت باشه آخرین نسخه از اون فایل به صورت اتوماتیک برای اون شخص Get خواهد شد .
در ضمن یکی دیگر از قابلیت های نرم افزارهای کنترل سورس ویژگی Label گذاری است مثلا شما 10 تا پروژه مختلف دارید که هر کدوم ممکنه nتا فایل و پروژه دیگه بهشون وصل باشه ، شما میتونید در زمان خاصی که برای خودتون مشخص هست یک Label برروی کل یا قسمتی از سورس ها بزارید و بعد از اون هر موقع که خواستید از اون قسمت Get کنید یا به اون قسمت rol Back کنید . فرض کنید ورژن 2 برنامتون Release شده یک Label میزارین و اینو مشخص میکنید و بلا فاصله تغییرات رو برای ورژن 3 میدید ولی چون ممکنه ورژن 3 هنوز به Stable نرسیده باشه لازم باشه ورژن 2 رو در یه زمانی نیاز پیدا کنید و بخواهید Get کنید .

vcldeveloper
شنبه 06 مهر 1387, 18:12 عصر
تغییرات با ورژن فرق داره. فرض کنید چند برنامه نویس دارن رو برنامه کار می کنند. هر کدوم یک سری تغییر می دن تا نسخه جدید سیستمو بدن.ممکنه 2 تاشون روی یک فایل کار کنه. حالا می خوام من بگم تا پایان این تغییرات نسخه من مثلا 2 است. حالا تغییرات نسخه 2 را با نسخه 1 به من گزارش بدهوقتی دو نفر روی یک فایل کار می کنند، وقتی هر یک از آنها کارش تمام شد، تغییرات را Commit میکنه. اگر قبل از Commit تغییرات، فرد دیگه ایی فایل را تغییر داده باشه، مثل کاربر دوم زودتر تغییراتش را Commit کرده باشه، یک Conflict بوجود میاد. SVN اول سعی میکنه خودش Conflict را برطرف کنه، به این صورت که بررسی میکنه که آیا این تغییرات در بخش های جداگانه ایی از فایل انجام شدند، یا تغییرات جدید تغییرات قبلی را Overwrite می کند. اگر تغییرات به هم ربطی نداشته باشند، SVN بطور خودکار متوجه میشه و تغییرات جدید را Commit میکنه، اما اگر تغییر جدید تغییر قبلی را Overwrite بکنه، SVN یک پنجره اخطار به کاربر نمایش میده و بهش اطلاع میده که Conflict وجود داره. در همون پنجره دکمه Diff هم هست. کاربر باید با استفاده از دکمه Diff ببینه کجای تغییراتش با تغییرات کاربر دیگه Conflict داره و آنها را برطرف کنه، یا اینکه به SVN بگه تغییرات جدید را در هر حال Commit کنه.
اگر بعد از Commit کردن تغییرات جدید، مدیر سیستم متوجه بشه که تغییرات جدید مشکل داشت، مثلا بخشی از سورس را بی دلیل از بین برده، میتونه تغییرات را به حالت قبل Revert کنه، همچین با استفاده از Blame میتونه متوجه بشه که چه کاربری در چه زمانی این تغییرات مشکل زا را در سیستم وارد کرده.

اگر برنامه نویسی روی قابلیتی جدای از مسیر اصلی توسعه کار میکنه، میتونه آن را به یک Branch جداگانه منتقل کند تا تغییراتی که اعمال میکنه روی شاخه اصلی برنامه که سایرین باهاش کار می کنند، مشکل ایجاد نکنه، بعد از اینکه به در کارش به نتیجه رسید، می تواند با استفاده از Merge تغییراتش را از Branch به شاخه اصلی (Trunk) منتقل کند، و آن را با شاخه اصلی ادغام کند.

در ضمن:

تغییرات با ورژن فرق داره.تغییر یعنی Revision جدید. در کار با سیستم های کنترل ورژن باید عادت کنید که بجای اینکه چند ده تغییر را اعمال کنید، سپس سورس را در مخزن Commit کنید، با هر تغییری یک Commit انجام بدید (یعنی به ازاء هر تغییری که انجام میدید یا هر قابلیتی که اضافه می کنید، یک Revision درست کنید).
همچنین، قبل از هر Commit، حتما یک بار Update کنید تا فایل های شما با نسخه سرور یکسان بشند، البته فایل هایی که تغییر دادید، را همانطور حفظ میکنه، فقط فایل هایی که شما تغییر ندادید، ولی دیگران تغییر دادند را بروز میکنه.

Elham_gh
یک شنبه 07 مهر 1387, 08:39 صبح
شرمنده , من گویا منظورمو بد بیان کردم. طرز کار کلی نرم افزارهایی از این دست یکسانند و من با نمونه اینها کار کرده ام.اما ایکه گفتم تغییرات ورژن نیست, منظورم این است که مجموعهای از یکسری از تغییرات منجر به ورژن می شه . و منظور سوال من این بود که شما فرض کنید نسخه stable ی دارید که ورژن 1.0 نرم افزار شماست. این نرم افزار 10 تا فایل داره.قرار است یکسری تغییرات روی این برنامه اعمال بشه برای نسخه 1.4. چند بر نامه نویسی هر کس روی فایل مرتبط خودش کار می کنه, حتی ممکنه بیش از یک نفر روی یک فایل باید تغییر اعمال کنند. نهایت همه این تغییرات ورژن 1.4 خواهد بود. خوب من باید یک جا نسخه 1.0 رو داشته باشم و بعد اعمال تغییراتم بگم اینم نسخه 1.4. حالا گزارشی از اختلاف و تغییرات 1.4 نسبت به 1.0 بهم بده.

فکر می کنم مطلبی که Microsoft.net در قسمت دوم , گفتند جواب سوال من بوده باشه.

vcldeveloper
یک شنبه 07 مهر 1387, 17:47 عصر
این نرم افزار 10 تا فایل داره.قرار است یکسری تغییرات روی این برنامه اعمال بشه برای نسخه 1.4. چند بر نامه نویسی هر کس روی فایل مرتبط خودش کار می کنه, حتی ممکنه بیش از یک نفر روی یک فایل باید تغییر اعمال کنند. نهایت همه این تغییرات ورژن 1.4 خواهد بود. خوب من باید یک جا نسخه 1.0 رو داشته باشم و بعد اعمال تغییراتم بگم اینم نسخه 1.4. حالا گزارشی از اختلاف و تغییرات 1.4 نسبت به 1.0 بهم بده.در SVN لیست تمامی فایل های تغییر کرده (تغییر، حذف، اضافه) در هنگام Commit کردن به همراه یک پیام که خود کاربر بصورت اختیاری می نویسه، بصورت Log ثبت میشه.
اگر شما بخواید تغییرات اعمال شده بین دو Revision را بررسی کنید، می تونید از منوی TortoiseSVN گزینه Show Log را انتخاب کنید:

23883

در این پنجره روی یکی از Revision ها راست کلیک کنید و گزینه Compare with previous revision را انتخاب کنید. تغییرات این Revision نسبت به Revision قبلی نمایش داده میشه. اگر می خواید تغییرات Revision انتخاب شده با چند Revision قبلی را مقایسه کنید، می تونید شماره Revison مورد نظر خود را وارد کنید، تا تغییرات بین این دو نمایش داده شود (مثلا از Revision 100 تا 120).
اگر می خواید تغییرات یک Revision نسبت به نسخه قبلی با جزئیات بدست بیارید، از گزینه Show changes as unidiff استفاده کنید. این گزینه یک فایل Patch به شما نمایش میده که جزئییات تغییرات هر فایل را نمایش میده و میشه با این فایل حتی یک Revision را Patch کرد.
زمانی که توسعه پروژه به مرحله خاصی میرسه که می خواید آن را Release کنید (مثلا نسخه 1، 2 ,و...)، می تونید از آن Tag بگیرید؛ یعنی یک کپی از فایل های Trunk در پوشه Tags قرار بگیرند. البته عملا فایلی کپی نمیشه، چون SVN فقط زمانی که فایلی تغییر کنه، آن را ثبت میکنه. وقتی فایلی در پوشه Tags قرار بگیره، SVN بطور عادی اجازه Commit کردن در این پوشه را نمیده. شما باید پروژه را در Trunk توسعه بدید و فقط وقتی به یک Milestone خاص رسیدید، آن را در Tags ذخیره کنید تا بعدا در صورت لزوم بتونید به راحتی این نسخه را پیدا کرده و یا مجددا فایلی را برای آن کامپایل کنید.

Microsoft.net
یک شنبه 07 مهر 1387, 19:27 عصر
در کل به نظر من تمام سورس کنترل های مبتنی بر فایل (File Base) همه در یک سطح اند و ممکنه اسمها عوض شده باشه وگرنه کاربردش همونه ؛ ولی سیستم های کنترل سورس (Server Base) مثل TFS خوب قضیش فرق میکنه کاربردهای زیادی بهش اضافه شده ، امنیت بالایی هم دارن و برای کاربرد های صنعتی واقعا ضروری به نظر میرسه .

vcldeveloper
دوشنبه 08 مهر 1387, 02:08 صبح
ولی سیستم های کنترل سورس (Server Base) مثل TFS خوب قضیش فرق میکنه کاربردهای زیادی بهش اضافه شده ، امنیت بالایی هم دارن و برای کاربرد های صنعتی واقعا ضروری به نظر میرسه .
قیاس سیستم هایی مثل TFS با SVN صحیح نیست، چون TFS صرفا یک Source Control نیست، بلکه یک Source Controller + Build Automation + Project Manager هست. در واقع چند سیستم را در هم ادغام کرده. بحث Server Base بودنش هم نمیتونه یک شاخصه باشه، چون همه نرم افزارهای Source Control به نوعی Server Base هستند. اهمیت نرم افزاری مثل TFS فقط در ارائه چند سرویس بصورت یکپارچه و مجتمع هست، نه بخاطر اینکه در زمینه Source Control امکان منحصر به فردی را ارائه میکنه!
این یکپارچگی هم مزیت هایی داره، هم معایبی، مزیتش اینه که کاربر مجبور نیست برای هر سرویس یک نرم افزار جداگانه خریداری کنه، نحوه کار کردنش را یاد بگیره، و آن را در چرخه توسعه نرم افزارش به شکلی بکار بگیره که با سایر ابزارهایش هماهنگ باشه؛ چون ابزارهای ارائه شده در یک سیستم مجتمع همگی با هم هماهنگ هستند و رابط کاربرشان هم شباهت های زیادی با هم دارد.

عیبش این هست که اگر یکی از سرویس های ارائه شده ضعیف باشه، معمولا قابلیت اینکه بخواید بجای آن از یک نرم افزار جداگانه استفاده کنید، وجود نداره، چون این سرویس ها به شدت یکپارچه شدند و نمیشه به این راحتی ارتباط یک بخش را از سایر بخش ها قطع کرد، یا یک نرم افزار 3rd Party را بجای آن در چرخه تولید قرار داد، پس چه خوب چه بد، یا باید همه سرویس ها را یک جا بگیرید، یا کلا بیخیالش بشید.

اما درباره TFS به عنوان یک محصول خاص، یک مشکل دیگه هم وجود داره و اون هم یکپارچگی زیاد با Visual Studio و سایر محصولات مایکروسافتی و وابستگی به سیستم عامل ویندوز هست، مثلا باید SharePoint داشته باشید، Windows Server داشته باشید، SQL Server 2005 داشته باشید، Visual Studio به عنوان کلاینت داشته باشید؛ یعنی عملا اگر کسی بخواد برای سکویی غیر از ویندوز برنامه بنویسه، باید بیخیال TFS بشه، اگر هم بخواد از سکوی ویندوز استفاده کنه، با این روندی که TFS در پیش گرفته باید مشتری اکثر محصولات مایکروسافت بشه! حتی برای رابط کاربر هم TFS چیزی ارائه نمیکنه، فقط یک مجموعه وب سرویس ارائه میکنه که اون هم مشخص هست که نرم افزارهای چه شرکتی بهترین استفاده را از آن کرده اند؛ Visual Studio محصول مایکروسافت. احتمالا اگر بخواید از یک محیط توسعه دیگه استفاده کنید، یا باید خودتون یک کلاینت برای وب سرویس های ارائه شده بنویسید، یا باید محصول یک شرکت دیگر را خریداری کنید که آن هم به خوبی Visual Studio نمی تواند با سرویس های ذکر شده ارتباط برقرار کند.

من شخصا ترجیح میدم ابزارهای لازم برای ایجاد خط تولید نرم افزارم را خودم انتخاب کنم، یعنی در هر بخش بهترین نرم افزاری را که نیازهای من را برآورده میکنه استفاده کنم، مثلا برای Build Automation ار FinalBuilder استفاده کنم، یا برای Bug Tracking از Jira استفاده کنم، و...
پس با این بخش از پست شما، "برای کاربرد های صنعتی واقعا ضروری به نظر میرسه" موافق نیستم.

البته دوباره تاکید می کنم که بحث درباره TFS فراتر از بحث Source Control مطرح شده در این تاپیک هست.

vcldeveloper
دوشنبه 08 مهر 1387, 02:26 صبح
Comparison of revision control software (http://en.wikipedia.org/wiki/Comparison_of_revision_control_software)

zman123456
سه شنبه 16 مهر 1387, 13:43 عصر
با سلام
تا اینجا که متوجه شدم میبینم که اونایی که خوبن همه serverbase هستن.
من گدابازی برنامه نویسی می کنیم.یعنی یه سیستم دارم این هم سرور هم کلاینت.
اگه بخوام تست کنم که تو شبکه کار میکنه یا نه باید برم پیش رفقا که شبکه دارن و منت کشی تا بذارن تست کنم.
حالا : کدوم یکی از اینا رو انتخاب کنم که هم خوب و قوی باشه و هم رو سیسیتم من جواب بده؟
با تشکر

whitehat
سه شنبه 16 مهر 1387, 17:04 عصر
دوست عزیز
اگه مشکلت فقط شبکه است از نرم افزارهای Virtual PC یا VmWare استفاده کن و بعد می تونی از هر کدام که خواستی استفاده کنی. این نرم افزارها به شما این قابلیت رو میده که هر چند تا کامپیوتر بخوای داشته باشی و با هم شبکشون کنی

vcldeveloper
چهارشنبه 17 مهر 1387, 01:22 صبح
تا اینجا که متوجه شدم میبینم که اونایی که خوبن همه serverbase هستن.
من گدابازی برنامه نویسی می کنیم.یعنی یه سیستم دارم این هم سرور هم کلاینت.
لزومی نداره که حتما یک سرور مستقل داشته باشی، البته برای نرم افزارهایی مثل MS Team Fundation لازم هست، چون مجموعه ایی از چند نرم افزار سنگین سمت سرور را نیاز داره، مثل SharePoint, SQLServer, و... اما برای سایرین، اگر تک کاربره هستی، میتونی سرور و کلاینت را روی یک سیستم نصب کنی. مثلا من در خانه برای پروژه های موجود در کامپیوترم از Subversion استفاده میکنم، یعنی سیستم خانه هم نقش سرور را بازی می کنید، هم نقش کلاینت. نیازی هم به رابط تحت وب Subversion که با آپاچی کار میکنه، ندارم.

unix_svr4
سه شنبه 30 مهر 1387, 10:08 صبح
سلام
کسی می دونه چطوری می شه از Subversion در KDevelop استفاده کرد؟؟؟
من همه جارو گشتم ولی چیزی پیدا نکردم که بتونه مشکلم رو حل کنه!!!
لطفا اگر کسی بلده من رو راهنمایی کنه!!
وقتی که می خواهم در KDevelop یک پروژه جدید بر روی Subversion ایجاد کنم با این پیام خطا مواجهه می شوم.
Fail to create project directories on repository

متشکرم.

vahidfallahi
شنبه 04 آبان 1387, 11:09 صبح
با سلام
برای کار گروهی با team foundation server در سمت کلاینت علاوه بر نصب visual studio 2005 نرم افزار دیگه ای هم بایستی نصب بشه یا خیر?میشه بیشتر توضیح بدید.
نحوه چگونگی کار گروهی بر روی یک پروژه vs2005 با استفاده از team foundation server رو اگه میشه توضیح دهید یا اگه فایل آموزشی در این زمینه سراغ دارید معرفی کنید
با تشکر

Microsoft.net
شنبه 04 آبان 1387, 15:58 عصر
با سلام
برای کار گروهی با team foundation server در سمت کلاینت علاوه بر نصب visual studio 2005 نرم افزار دیگه ای هم بایستی نصب بشه یا خیر?میشه بیشتر توضیح بدید.
نحوه چگونگی کار گروهی بر روی یک پروژه vs2005 با استفاده از team foundation server رو اگه میشه توضیح دهید یا اگه فایل آموزشی در این زمینه سراغ دارید معرفی کنید
با تشکر

در سمت کلاینت به غیر از VS نرم افزاری موسوم به Team foundation client explorer باید نصب بشه که حجم نسبتا کمی داره و فقط سرور هست که کمی در نصب ممکنه به مشکل بخوره (از نظر سختی نصب)

vahidfallahi
شنبه 04 آبان 1387, 19:53 عصر
با سلام
من داخل سی دی vs 2008 فولدر tfc فایل setup را بروی کلاینت نصب کردم .حالا زمانیکه وارد vs2008 میشم از منوی file گزینه new و سپس team project رو می زنم از من team foundation server name می خواهد .
ایا بروی سرور هم باید همین فایل setup را نصب کنم؟ چون بروی سرور هم همین رو نصب کردم و زمانیکه از کلاینت ادرس سرور رو دادم اخطار داد که نمی تونه به team foundation server کانکت بشه.
ایا منظور از team foundation server name نام کامپیوتر سرور است؟
ممنون میشم اگه بیشتر راهنماییم کنید.

Elham_gh
سه شنبه 14 آبان 1387, 08:24 صبح
چطور می شه Subversion کرک شده رو پیدا کرد؟

anubis_ir
سه شنبه 14 آبان 1387, 15:14 عصر
اين بيچاره سورس باز و مجاني است :)
http://www.mohand.es/search.php?search=subversion

Elham_gh
سه شنبه 14 آبان 1387, 15:20 عصر
اين بيچاره سورس باز و مجاني است :)
http://www.mohand.es/search.php?search=subversion

بله حق با شماست , اما TortoiseSVN چی؟

anubis_ir
سه شنبه 14 آبان 1387, 15:25 عصر
اون هم مجاني و سورس باز است. هر دو رايگان هستند.

hamidkarimy
یک شنبه 22 اسفند 1389, 21:54 عصر
سلام به همه دوستان
من برای تیم برنامه نویسی تو شرکت دارم رو TFS کار میکنم
دو خط تولید دلفی و سی سارپ به طور همزمان قراره ییرم رو TFS
یه برنامه هست که رو دلفی نسب میشه و ارتباط دلفی و TFS رو بر قرار میکنه به نام SourceConneXion یعنی مثل ویژوال استدیو تو منوهاتون Source control اضافه میشه
نصب TFS راحت نیست ولی خروجی رضایت بخشه