An introduction to Version Control Systems (हिंदी)

सभी अनुभवी software developer जानते हैं कि हम जितना भी चाहें, नए code की कुछ लाइनें ऐसी हो सकती हैं, जो पुराने code की किसी existing functionality को break कर दें या कोई bug introduce कर दें - software engineering के सन्दर्भ में इसे regression कहा जाता है | regression की सम्भावना से निपटने के लिए बहुत से developers backup या manual copying का इस्तेमाल करते हैं - लेकिन आख़िरकार backup copies रखने की भी सीमा होती है| ऐसी unplanned backup versions को याद रखना और उनका रख-रखाव अपने आप में एक burden और confusion की वजह बन सकता है, खासकर मुश्किल और बड़े projects में, और जब changes जल्दी-जल्दी हो रहे हों| Team में प्रत्येक नया developer जुड़ने से समस्या और विकट हो जाती है क्योंकि आप गलती से केवल अपने ही नहीं बल्कि दूसरों के काम को भी overwrite कर सकते हैं| Deadline सर पर हो तो client और अपने सहयोगियों से तूतु-मैंमैं होने की भी संभावना रहती है :(

Version Control System या VCS code के different versions को - चाहे वो versions हमने बनाये हों अथवा दुसरे team members ने - effectively manage करने का एक बेहतर तरीका है| साधारण शब्दों में कहा जाये तो VCS एक ऐसा software है जिसका काम ही है overwrite होने से पहले पुराने version का automatically backup बनाकर सुरक्षित रखना और सभी versions / changes का proper record maintain रखना| हम कभी भी पुराने versions / files को बिना confusion के restore करके use कर सकते हैं - सालों बाद भी | ये न केवल आपको manual backup / copying के झंझट से मुक्त रखता है बल्कि फलां-फलां files को किस team member ने और कब change किया, इसकी भी line-by-line history maintain करता है जिससे हम सबको व्यवस्थित और जिम्मेदार तरीके से काम करने का मौका मिलता है और हम अपना ध्यान पूरी तरह से अपने असली काम, बेहतर software लिखने, पर लगा पायें|

Concurrent Versions System (CVS), Subversion, Git , Mercurial, Bazaar, Bitkeeper इत्यादि सभी VCS के उदाहरण हैं| सभी open -source software projects किसी न किसी VCS का उपयोग करते हैं - जो दर्ज़नों और कई बार सैंकड़ों developers के code contributions को लगातार manage करते हैं| पुराने project ज्यादातर CVS का इस्तेमाल कर रहे हैं जैसे Moodle और Drupal. Subversion जिसे SVN के नाम से भी जाना जाता है को इस्तेमाल करने वालों में PHP और Ruby शामिल हैं| Git का इस्तेमाल Linux और MySQL जैसे projects कर रहे हैं|

Version control system (VCS) code के अलग-अलग versions और history को store करने के लिए जिन files और data structures का इस्तेमाल करता है, उन्हें repository कहा जाता है| यदि ये repository सिर्फ एक central server पर ही उपलब्ध हो तो इसे Centralised VCS कहा जाता है. Centralised VCS के case में user के पास एक working copy होती है जिसमें केवल last downloaded version और user के local changes होते हैं| पुरानी history और versions देखने के लिए user को network पर Central Repository को access करना पड़ता है| इससे अलग यदि प्रत्येक user के पास अपनी repository locally उपलब्ध हो तो इसे Distributed VCS कहा जाता है | Distributed VCS का advantage ये है कि network उपलब्ध न होने पर भी बहुत सारे काम offline mode में किये जा सकते हैं|

CVS और SVN दोनों Centralised VCS हैं जबकि Git, Mercurial, Bazaar और Bitkeeper Distributed VCS हैं| Distributed VCS, खासतौर पर Git बहुत तेजी से popular हो रहे हैं और और भविष्य में Moodle और Drupal दोनों के Git पर आने की संभावना है|

Post new comment

The content of this field is kept private and will not be shown publicly.
Type in
While typing, you can press Ctrl+g for switching on-off
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options