در مجموعه دیگری بدون آن که خیلی اصرار کنم موفق شدم به جای TFS یا هر سورس کنترل دیگری از git استفاده کنم. اما حالا سخت پشیمانم و نادم. چون بر و بچ محترم حال ندارند چند تا نکته ساده را هم رعایت کنند. به فکر آقایان و خانمها خطور نمیکند که:
۱- قبل از صدور دستور commit، فایلهای تغییر یافتهشان را save کنند،
۲- حذف و اضافه فایل به پروژه در ویژوال استودیو نیاز به Save all یا اقلاً یک Rebuild Solution دارد،
۳- اگر دو نفر یک جای یکسان از یک فایل واحد را تغییر دهند، merge conflictی به وجود میآید که خود git نمیتواند آن را به طور خودکار resolve (حل) کند. و این از منطق کار تیمی و منطق فکری نشات میگیرد و جز نقایص git یا هر سورس کنترل دیگری نیست،
۴- ساختار پروژه در ویژوال استودیو خودش در یک فایل خاص با پسوند csproj نگهداری میشود پس به وجود آمدن merge conflict در آنجا هم امکانپذیر است،
۵- برای پیشگیری از merge conflict اول هر روز کاری یا حتی دو سه بار در روز، قبل از شروع کار باید اول تغییرات دیگران را دریافت کرد،
۶- نگهداری فایل یک کلاس یا winform با بیش از ۱۵۰۰ خط کار درستی در یک محیط تیمی و تحت سورس کنترل نیست،
۷- …
تنها فرق حالت اول و دوم این است در که در حالت اول خود ویژوال استودیو همه کارها را انجام میدهد. مثلاً قبلاً از check-in شما را مجبور میکند که همه فایلها را save کنید. بنابراین کسی مجبور نیست از معدن گچش استفاده کرده و حواسش به save فایلها قبل از ارسال به سرور باشد.
این است که دستهایمان را به نشانه تسلیم بالا برده و اجازه میدهیم دوستان به جای استفاده از git، سورس مشترکشان را روزی ده بار از طریق usb flash با هم به اشتراک بگذارند و خودشان نقش سورس کنترل را بازی کنند.
البته این بازی یک درس هم برای من داشت. آن هم این که اگر افراد به طور داوطلبانه از سورس کنترل git یا حتی svn استفاده کردند معنیاش آن است که آنها افراد دقیق و قابل اعتمادی هستند.
.
.
.
.
باشد که روزی به راه راست هدایت شویم.
دیدگاهها
این صحبت های شما رو میخونم تفاوت ها رو حس میکنم، خندم میگیره. یعنی اینجا (مشهد) من توی شرکت های خیلی اسم و رسم دار این مسائل رو دیدم. جنگ های صلیبی برای قبولاندن SVN بجای SourceSafe. اما جاهای دیگه مساله سورس کنترل نبود، مساله این بود که جان مادرتون اگه رو یه فرم کار میکنین قبلش به من بگین که منم رو همون کار نکنم یه صبح تا ظهر کار احمقانه بکنیم!
تو رو خدا میبینی تفاوت سطح مشکلات رو؟!
البته الان گویا بهتره اوضاع. لااقل همه اسم TFSرو شنیدن :دی
نسب = نصب 🙂
گفته میشود مرکوری هم امکانات distributed گیت را دارد و هم برای کاربران ویندوزی خیلی راحت و آشناست. البته کاملاً رایگان.
مشکلتون با TFS چیه؟ فقط رایگان نبودنش؟
مشکلات شخصی من:
رایگان نبودن،
distribute نبودن،
احتیاج به سرور و سختافزار آنچنانی،
حجیم بودن مراحل نصب، پشتیبان گیری و نگهداری،
عدم رواج در پروژههای open source
———————————–
خیر مشکل اصلی TFS این است که Distributed نیست و برای مثال:
1. اگر شما Offline کار کنید و تصمیم بر Go Online بگیرید. ممکن است مشکلات زیادی برایتان اتفاق افتد. مثلاً شاید شما نخواهید بعضی از فایلهایی که روی پروژه شما هستند در TFS قرار بگیرند (شاید Autogenerated توسط پروژه شما باشد.) (TFS برای ردگیری اینکه در حالت Offline چه فایلهایی تغییر کرده از خصیصه IsReadOnly فایلها استفاده میکند)
2. وقتی سرعت اینترنت شما کم است و از راه دور مشغول کار با TFS هستید، مشکلات فراوانی خواهید داشت (Hang کردن VS و …)
3. برای Agile بهینه نیست. اگر دو تیم کوچک در یک پروژه بخواهند بر روی کارهای متفاوتی کار کنند بهتر است دو Branch جداگانه ایجاد کرده و به کارشان ادامه دهند تا بتوانند مرتب تغییراتشان را وارد Server کنند و از یکدیگر ایزوله باشند. در حالی که امکان مدیریت Branch نه فقط در TFS که در اکثر SourceControl ها یا خیلی مصخره است یا رنج آور. اما در برخی Source Control ها بهتر است. (من در مورد PlasticSCM مطمئن هستن چون با آن کار کردم. بزرگترین هنر آن کار با Branch هاست.)
و البته به اضافه مطالب آقای افشار.
متاسفانه رایگان نبودن محصولات که از کمترین اهمیت در بین ما برخوردار است.
اگه از TFS، فقط برای Source Control استفاده بکنید شاید به نظر گنده بیاد. ولی برای کار Enterprise به نظرم امکاناتی داره که نمیشه ازشون گذشت.
1 , 2- به این مشکلات بر نخوردم، به خاطر همین نمیتونم اظهار نظری بکنم.
3- ما به شکل مستمر از Branch و Merge موجود در TFS استفاده میکنیم بدون این که رنجی ببریم. البته بازم از PlasticSCM استفاده نکردم تا ببینم چی دارم از دست میدم. حتما یه نگاهی میندازم.
ولی در مورد رایگان بودن به نظرم یه مقدار وسواس به خرج دادنه. مثل اینه که به جای Visual Studio بریم از SharpDevelop استفاده کنیم.
آره قبول دارم که TFS امکانات خوبی در سطح enterprise داره. مثلاً build automation آن واقعاً عالی و بدون نقص است. اما به هر حال بیشتر افراد از آن به صورت غیر enterprise استفاده میکنند.
من هم در عمل به مشکلات ۱ و ۲ خیلی برخورد کرده و اذیت شدهام. کار با TFS از طریق یک شبکه کند مثل اینترنت ایران واقعاً عذاب است.