SlideShare une entreprise Scribd logo
1  sur  33
DVCS with Mercurial Feb 2011
Agenda What is DVCS? How does it work? Mercurial features Extensions Why not SVN? (SVN vs Mercurial) Questions
What is DVCS?
What is DVCS? DVCS - A distributed revision control, distributed version control system (DVCS) keeps track of software revisions and allows many developers to work on a given project independent of network access or a central server. Committing, branching and merging are fast.
DVCS is… 	Distributed version control system (DVCS) takes a peer-to-peer approach, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a bona-fide repository. Distributed version control conducts synchronization by exchanging patches (change-sets) from peer to peer
Currently in SVN
Currently in Mercurial
DVCS - Advantages Fast Mercurials implementation and data structures are designed to be fast. You can generate diffs between revisions, or jump back in time within seconds.  Platform independent 	Mercurial was written with platform independence in mind. Therefore most of Mercurial is written in Python, with a small part in portable C for performance reasons. As a result, binary releases are available on all major platforms. Extensible 	The functionality of Mercurial can be increased with extensions, either by activating the official ones which are shipped with Mercurial or downloading some from the wiki or by writing your own. Extensions are written in Python and can change the workings of the basic commands, add new commands and access all the core functions of Mercurial. Open Source 	Mercurial is free software licensed under the terms of the GNU General Public License Version 2.
How does it work? or how it works with TortoiseHG
You have: ,[object Object]
A repository. A directory (.hg in Mercurial) containing all patches and metadata (comments, guids, dates, etc.). There’s no central server so the data stays with you.,[object Object]
How does it work? – Changesets! ,[object Object]
A changeset is an atomic collection of changes to files in a repository.
It contains all recorded local files modification and:
information about who made the change (the "committer"), why ("comments") and when (date/time, timezone)
the name of the branch ("default", if omitted or not set)
A changeset is identified uniquely by a changeset ID (1ef7872431f9c64908c732f0bcd4db5700b4cb70 ). In a single repository, you can identify it using a revision number. ,[object Object]
How does it work? – Csets tree!
How does it work? – Push to stable!
How does it work? – Push to stable!
How does it work? – Push to stable!
Mercurial features	 ,[object Object]
Merging conflicting changes
Searching through history
Viewing repository through a web browser
Using Mercurial as a “super client” for Subversion,[object Object]
Mercurial Features – Merge conflicts
Mercurial Features – web browser
How does it work? - basic commands Commit selected diffs in checked files. Undo (rollback) last immediate commit.  VisualDiff checked files. Revert checked files to last revisioned state Add checked files Move checked files Remove checked files Forget checked files Pull all changes from another repository into the current one  Push all changes from your repository into another one  Shelve changes when they not needed and get them back in future
Extensions
Extensions - Enabling
Extensions - rebase
Extensions – Shelve	 The shelve extension lets you to choose which parts of the changes in a working directory you'd like to set aside temporarily, at the granularity of patch hunks. You can later restore the shelved patch hunks using the unshelve command.

Contenu connexe

Tendances

Tendances (20)

File permission in linux
File permission in linuxFile permission in linux
File permission in linux
 
Github
GithubGithub
Github
 
Gerrit Code Review
Gerrit Code ReviewGerrit Code Review
Gerrit Code Review
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Version control system
Version control systemVersion control system
Version control system
 
Introduction To Makefile
Introduction To MakefileIntroduction To Makefile
Introduction To Makefile
 
Ubuntu installation-presentations
Ubuntu installation-presentationsUbuntu installation-presentations
Ubuntu installation-presentations
 
Git
GitGit
Git
 
makefiles tutorial
makefiles tutorialmakefiles tutorial
makefiles tutorial
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
Subversion to Git Migration
Subversion to Git MigrationSubversion to Git Migration
Subversion to Git Migration
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
Linux Administration
Linux AdministrationLinux Administration
Linux Administration
 
File permission of linux
File permission of linuxFile permission of linux
File permission of linux
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 

Similaire à Mercurial presentation

Slide set 7 (Source Code Management History Overview) - Copy.pptx
Slide set 7 (Source Code Management History  Overview) - Copy.pptxSlide set 7 (Source Code Management History  Overview) - Copy.pptx
Slide set 7 (Source Code Management History Overview) - Copy.pptx
UTKARSHBHARDWAJ71
 
Svn vs mercurial vs github
Svn  vs  mercurial vs  githubSvn  vs  mercurial vs  github
Svn vs mercurial vs github
Vinoth Kannan
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
Ashraf Fouad
 
Introduction to Version Control and Configuration Management
Introduction to Version Control and Configuration ManagementIntroduction to Version Control and Configuration Management
Introduction to Version Control and Configuration Management
Philip Johnson
 
Version Control with Git
Version Control with GitVersion Control with Git
Version Control with Git
Sahil Agarwal
 

Similaire à Mercurial presentation (20)

Subversion
SubversionSubversion
Subversion
 
SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best Practices
 
Slide set 7 (Source Code Management History Overview) - Copy.pptx
Slide set 7 (Source Code Management History  Overview) - Copy.pptxSlide set 7 (Source Code Management History  Overview) - Copy.pptx
Slide set 7 (Source Code Management History Overview) - Copy.pptx
 
SVN Information
SVN Information  SVN Information
SVN Information
 
Version control with GIT
Version control with GITVersion control with GIT
Version control with GIT
 
Subversion
SubversionSubversion
Subversion
 
version control system (2).pptx
version control system (2).pptxversion control system (2).pptx
version control system (2).pptx
 
Part 4 - Managing your svn repository using jas forge
Part 4  - Managing your svn repository using jas forgePart 4  - Managing your svn repository using jas forge
Part 4 - Managing your svn repository using jas forge
 
How to use CVS applied to SOLab
How to use CVS applied to SOLabHow to use CVS applied to SOLab
How to use CVS applied to SOLab
 
Git hub_pptx
Git hub_pptxGit hub_pptx
Git hub_pptx
 
Svn vs mercurial vs github
Svn  vs  mercurial vs  githubSvn  vs  mercurial vs  github
Svn vs mercurial vs github
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
Subversion (SVN)
Subversion (SVN)Subversion (SVN)
Subversion (SVN)
 
GIT INTRODUCTION
GIT INTRODUCTIONGIT INTRODUCTION
GIT INTRODUCTION
 
Introduction to Version Control and Configuration Management
Introduction to Version Control and Configuration ManagementIntroduction to Version Control and Configuration Management
Introduction to Version Control and Configuration Management
 
Version Control Training - First Lego League
Version Control Training - First Lego LeagueVersion Control Training - First Lego League
Version Control Training - First Lego League
 
Version Control with Git
Version Control with GitVersion Control with Git
Version Control with Git
 
Git
GitGit
Git
 
Subversion on .Unix
Subversion on .UnixSubversion on .Unix
Subversion on .Unix
 
Subversion on .Unix
Subversion on .UnixSubversion on .Unix
Subversion on .Unix
 

Plus de dotNETUserGroupDnipro (11)

Sonar quality
Sonar qualitySonar quality
Sonar quality
 
Ef code first
Ef code firstEf code first
Ef code first
 
Rx for .net
Rx for .netRx for .net
Rx for .net
 
Winmobile
WinmobileWinmobile
Winmobile
 
Soft serve prism
Soft serve prismSoft serve prism
Soft serve prism
 
Html5
Html5Html5
Html5
 
Erp microsoft dynamics
Erp microsoft dynamicsErp microsoft dynamics
Erp microsoft dynamics
 
Css 3 overview
Css 3 overviewCss 3 overview
Css 3 overview
 
Mvc3
Mvc3Mvc3
Mvc3
 
Balsamiq
BalsamiqBalsamiq
Balsamiq
 
Azure for ug
Azure for ugAzure for ug
Azure for ug
 

Mercurial presentation

  • 2. Agenda What is DVCS? How does it work? Mercurial features Extensions Why not SVN? (SVN vs Mercurial) Questions
  • 4. What is DVCS? DVCS - A distributed revision control, distributed version control system (DVCS) keeps track of software revisions and allows many developers to work on a given project independent of network access or a central server. Committing, branching and merging are fast.
  • 5. DVCS is… Distributed version control system (DVCS) takes a peer-to-peer approach, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a bona-fide repository. Distributed version control conducts synchronization by exchanging patches (change-sets) from peer to peer
  • 8. DVCS - Advantages Fast Mercurials implementation and data structures are designed to be fast. You can generate diffs between revisions, or jump back in time within seconds. Platform independent Mercurial was written with platform independence in mind. Therefore most of Mercurial is written in Python, with a small part in portable C for performance reasons. As a result, binary releases are available on all major platforms. Extensible The functionality of Mercurial can be increased with extensions, either by activating the official ones which are shipped with Mercurial or downloading some from the wiki or by writing your own. Extensions are written in Python and can change the workings of the basic commands, add new commands and access all the core functions of Mercurial. Open Source Mercurial is free software licensed under the terms of the GNU General Public License Version 2.
  • 9. How does it work? or how it works with TortoiseHG
  • 10.
  • 11.
  • 12.
  • 13. A changeset is an atomic collection of changes to files in a repository.
  • 14. It contains all recorded local files modification and:
  • 15. information about who made the change (the "committer"), why ("comments") and when (date/time, timezone)
  • 16. the name of the branch ("default", if omitted or not set)
  • 17.
  • 18. How does it work? – Csets tree!
  • 19. How does it work? – Push to stable!
  • 20. How does it work? – Push to stable!
  • 21. How does it work? – Push to stable!
  • 22.
  • 26.
  • 27. Mercurial Features – Merge conflicts
  • 28. Mercurial Features – web browser
  • 29. How does it work? - basic commands Commit selected diffs in checked files. Undo (rollback) last immediate commit. VisualDiff checked files. Revert checked files to last revisioned state Add checked files Move checked files Remove checked files Forget checked files Pull all changes from another repository into the current one Push all changes from your repository into another one Shelve changes when they not needed and get them back in future
  • 33. Extensions – Shelve The shelve extension lets you to choose which parts of the changes in a working directory you'd like to set aside temporarily, at the granularity of patch hunks. You can later restore the shelved patch hunks using the unshelve command.
  • 34. Extensions – more and more Purge – deletes all files and directories in the repository that are not being tracked by Mercurial Notify – Send email to subscribed addresses to notify repository changes Convert – convert repositories from other SCMs into Mercurial Highlight – Highlight syntax in the file revision view of hgweb Bisect – Quickly find the revision that introduces a bug or feature bisecting the history tree …
  • 36.
  • 37. If your computer is on, you have access to the repository
  • 38.
  • 39. Fast performance; you’re working on local filesystem
  • 40. Cheap to create/throw away local experimental branch
  • 41. Branching is easy, but merging is painful
  • 42.
  • 43.
  • 44. Better understanding of version control concepts required
  • 45. Need to define and adhere to convention to know where the trunk is
  • 46. Familiar to most developers
  • 48.
  • 49. Usefull links Download Mercurial: http://mercurial.selenic.com/wiki/Download Dvcs With Mercurial presentation: http://www.slideshare.net/tednaleid/dvcs-with-mercurial-no-notes Migrating from and VCS: http://mercurial.selenic.com/wiki/RepositoryConversion VS Plugin: http://visualhg.codeplex.com/ Mercurial as a “super client” for Subversion: http://naleid.com/blog/2008/05/01/using-mercurial-as-a-super-client-for-subversion/