SlideShare uma empresa Scribd logo
1 de 56
1 Your next Version Control System Gilad Garon December 18th 2008
Agenda Introduction Branching Merging Subversion 1.5  Distributed Version Control 2
Introduction What’s every VCS user worst nightmare? Nope. It’s… 3
Agenda Introduction Branching Merging Subversion 1.5  Distributed Version Control 4
Development Cycle	 Our repository layout should behave like our development cycle: Development Phase Testing Phase Release Final Product Our VCS should accommodate us and not the other way, no matter what’s our development process. 5
Single Development Line One branch holds all phases of the develop cycle. 6
Development Line with Support Line 7 Pros Cons
Development Line with Support Line One branch holds our development code. A second branch holds our production code for continued support. 8
Development Line with Support Line 9 Pros Cons
Three Level Build A classic layout for a three phase development cycle. Release candidates are for the testing phase and support phase.  The production branch is sterile. 10
Development Line with Support Line 11 Pros Cons
Multiple Feature Support Build #1 Feature branches allow for even more code separation on complex projects 12
Multiple Feature Support Build #2 13 ,[object Object],[object Object]
Branching is good for you Branches are great for code separation. Branches are cheap Branches are easy to createSo, what’s the catch? 15
Agenda Introduction Branching Merging Subversion 1.5  Distributed Version Control 16
Merging What the?! Override everything! Seems Familiar? 17
Why merges are hard? Requires knowledge of the code Resolving conflicts by hand takes time Large projects require some planning Can cause logical bugs which aren’t easily detected 18
Making merges easier Merge daily! Let the VCS do the merge for you Don’t merge at the last minute, allocate merging time in your time table. Keep tabs on your code, keep notes on your changes. 19
Merge Tracking ,[object Object]
No more revision calculations
Cherry Pick your changes
See incoming changes
Refactor code without fear My Hero! 20
Common Myths ,[object Object]
Merges are hard?
Daily merges helps?
Automatic merges are dangerous?
Merging takes days of preparation?21
Agenda Introduction Branching Merging Subversion 1.5 Distributed Version Control 22
What’s New? Merge tracking Sparse checkouts Interactive conflict resolution Changelist support Speed improvements, cancellation response improvements Bug Fixes 23
Merge Tracking Create a branch Work on your branch Update your branch with trunk’s changes svn copy http://yourserver.com/svn/project-x/trunk       http://yourserver.com/svn/project-x/branches/feature-z       -m "Creating a feature branch of /project-x/trunk." svn checkout http://yourserver.com/svn/project-x/branches/feature-z… work …svn commit - m “committing my work."  svn merge http://yourserver.com/svn/project-x/trunk --- Merging r20 through r45 into '.': U GridView.java  24
Merge Tracking What has been merged so far? Which changes are available from trunk?  svn propget svn:mergeinfo . /trunk:20-45 # or  svn mergeinfo http://yourserver.com/svn/project-x/trunk r20r21…r44r45 svn mergeinfo http://yourserver.com/svn/project-x/trunk --show-revs eligible r46r47 25
Merge Tracking Merging back your branch: What’s the catch?  No support for renames moves Mergeinfo is sometimes generated when no merge was done $ cd /workspace/project-x/trunk$ svn merge --reintegrate http://yourserver.com/svn/project-x/branches/feature-z--- Merging differences between repository URLs into '.': … changes list …# build, test, verify, ... $ svn commit -m “Merging feature-z back into trunk!"  26
More New Features Sparse checkouts Interactive conflict resolution Changelist support $ svn checkout URI --depth=[empty,files,immediates,infinity]# command support - checkout, switch, update, status, info $ svn up U project-x/trunk/GridView.javaConflict discovered in 'project-x/trunk/GridView.java'.Select: (p) postpone, (df) diff-full, (e) edit, (s) show all options: $ svn changelist bug-fix-1 GridView.javaPath 'GridView.java' is now a member of changelist 'bug-fix-1'.$ svn status --- Changelist ‘bug-fix-1': M GridView.java 27
Upgrading to Subversion 1.5 Server	 Backup everything  Install Subversion 1.5 Server Upgrade existing repositories with: Populate indexes (Optional): Upgrade clients Pray to god 28 $ svnadmin upgrade REPOS_PATH $ svn-populate-node-origins-index REPOS-PATH
TortoiseSVN 1.5 29 TortoiseSVN is upgraded to support Subversion 1.5 The Merge process is simplified and merge tracking is supported The repository now more resembles the Windows explorer Changelist support is supported Hook Scripts and Issue Trackers are supported
TortoiseSVN 1.5 Merge 30
New Feature Compatibility Table 31
Agenda Introduction Branching Merging Subversion 1.5  DistributedVersion Control 32
What is DVCS? Distributed VCS does NOT mean the physical distribution of the repository over several machines. Distributed VCS means the repository is located on your machine. 33
Terminology In DVCS we… Do not check out from the repository, we clonethe repository. Do not update our working copy, we pullchanges from other repositories. Do not check in our changes,we pushchanges to other repositories. 34
Advantages You are the repository Performance, no network overhead. Work offline, work where ever you want. Experiment, no commit rights required. Local Commits, the repository is in your workspace. Flexible repository topology 35
Disadvantages But… Sparse checkouts are not fully supported if at all. Most vendors do not support branching, you must clone. Merge Tracking needs to mature a bit. More suited to Open Source projects than commercial. 36
Centralized Workflow 37
Decentralized Workflow 38
Decentralized with shared mainlineWorkflow 39
Decentralized with GatekeeperWorkflow 40
Git ,[object Object]
Invented by Linus Torvalds to replace BitKeeper
Toolkit design
Used in - Linux Kernel, VLC, Ruby On Rails, Fedora, Android
IDE Support - Eclipse, NetBeansIntelliJ (Native)Subversion is the devil, use Git. 41
Git Shell 42
Gitk 43
Git Pros & Cons 44 Pros Cons
Bazaar ,[object Object]

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
DockerCon SF 2015: DHE/DTR
DockerCon SF 2015: DHE/DTRDockerCon SF 2015: DHE/DTR
DockerCon SF 2015: DHE/DTR
 
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas HoppeOSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
 
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - JelasticAutomation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
 
Microcontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container DebuggingMicrocontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container Debugging
 
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline
 
Introduction to GitHub Actions - How to easily automate and integrate with Gi...
Introduction to GitHub Actions - How to easily automate and integrate with Gi...Introduction to GitHub Actions - How to easily automate and integrate with Gi...
Introduction to GitHub Actions - How to easily automate and integrate with Gi...
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
 
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
 
DCSF 19 Microservices API: Routing Across Any Infrastructure
DCSF 19 Microservices API: Routing Across Any InfrastructureDCSF 19 Microservices API: Routing Across Any Infrastructure
DCSF 19 Microservices API: Routing Across Any Infrastructure
 
Openshift presentation
Openshift presentationOpenshift presentation
Openshift presentation
 
A microservice architecture based on golang
A microservice architecture based on golangA microservice architecture based on golang
A microservice architecture based on golang
 
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-final
 
OSDC 2018 | Git things done with GitLab by Gabriel Hartmann and Nicole Lang
OSDC 2018 | Git things done with GitLab by Gabriel Hartmann and Nicole LangOSDC 2018 | Git things done with GitLab by Gabriel Hartmann and Nicole Lang
OSDC 2018 | Git things done with GitLab by Gabriel Hartmann and Nicole Lang
 
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydration
 

Destaque

Destaque (9)

Version Control Systems with git (and github) as an example
Version Control Systems with git (and github) as an exampleVersion Control Systems with git (and github) as an example
Version Control Systems with git (and github) as an example
 
Git the fast version control system
Git the fast version control systemGit the fast version control system
Git the fast version control system
 
Version Control System
Version Control SystemVersion Control System
Version Control System
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Version Control System
Version Control SystemVersion Control System
Version Control System
 
HotSpot JVM Tuning
HotSpot JVM TuningHotSpot JVM Tuning
HotSpot JVM Tuning
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Semelhante a JavaEdge 2008: Your next version control system

Embracing Distributed Version Control
Embracing Distributed Version ControlEmbracing Distributed Version Control
Embracing Distributed Version Control
Nowell Strite
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
Vladimir Bakhov
 

Semelhante a JavaEdge 2008: Your next version control system (20)

Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel development
 
De-centralised Version Control with Bazaar
De-centralised Version Control with BazaarDe-centralised Version Control with Bazaar
De-centralised Version Control with Bazaar
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Automating the Quality
Automating the QualityAutomating the Quality
Automating the Quality
 
Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10
 
Embracing Distributed Version Control
Embracing Distributed Version ControlEmbracing Distributed Version Control
Embracing Distributed Version Control
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
 
Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce Innovations Showcase 
Perforce Innovations Showcase 
 
Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 Recap
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Kubernetes Workshop
Kubernetes WorkshopKubernetes Workshop
Kubernetes Workshop
 
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - SydneySimplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
 
Caching in Windows Azure
Caching in Windows AzureCaching in Windows Azure
Caching in Windows Azure
 
Drupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study CaseDrupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study Case
 
Migration Effort in the Cloud - The Case of Cloud Platforms
Migration Effort in the Cloud - The Case of Cloud PlatformsMigration Effort in the Cloud - The Case of Cloud Platforms
Migration Effort in the Cloud - The Case of Cloud Platforms
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

JavaEdge 2008: Your next version control system

  • 1. 1 Your next Version Control System Gilad Garon December 18th 2008
  • 2. Agenda Introduction Branching Merging Subversion 1.5 Distributed Version Control 2
  • 3. Introduction What’s every VCS user worst nightmare? Nope. It’s… 3
  • 4. Agenda Introduction Branching Merging Subversion 1.5 Distributed Version Control 4
  • 5. Development Cycle Our repository layout should behave like our development cycle: Development Phase Testing Phase Release Final Product Our VCS should accommodate us and not the other way, no matter what’s our development process. 5
  • 6. Single Development Line One branch holds all phases of the develop cycle. 6
  • 7. Development Line with Support Line 7 Pros Cons
  • 8. Development Line with Support Line One branch holds our development code. A second branch holds our production code for continued support. 8
  • 9. Development Line with Support Line 9 Pros Cons
  • 10. Three Level Build A classic layout for a three phase development cycle. Release candidates are for the testing phase and support phase. The production branch is sterile. 10
  • 11. Development Line with Support Line 11 Pros Cons
  • 12. Multiple Feature Support Build #1 Feature branches allow for even more code separation on complex projects 12
  • 13.
  • 14. Branching is good for you Branches are great for code separation. Branches are cheap Branches are easy to createSo, what’s the catch? 15
  • 15. Agenda Introduction Branching Merging Subversion 1.5 Distributed Version Control 16
  • 16. Merging What the?! Override everything! Seems Familiar? 17
  • 17. Why merges are hard? Requires knowledge of the code Resolving conflicts by hand takes time Large projects require some planning Can cause logical bugs which aren’t easily detected 18
  • 18. Making merges easier Merge daily! Let the VCS do the merge for you Don’t merge at the last minute, allocate merging time in your time table. Keep tabs on your code, keep notes on your changes. 19
  • 19.
  • 20. No more revision calculations
  • 23. Refactor code without fear My Hero! 20
  • 24.
  • 27. Automatic merges are dangerous?
  • 28. Merging takes days of preparation?21
  • 29. Agenda Introduction Branching Merging Subversion 1.5 Distributed Version Control 22
  • 30. What’s New? Merge tracking Sparse checkouts Interactive conflict resolution Changelist support Speed improvements, cancellation response improvements Bug Fixes 23
  • 31. Merge Tracking Create a branch Work on your branch Update your branch with trunk’s changes svn copy http://yourserver.com/svn/project-x/trunk http://yourserver.com/svn/project-x/branches/feature-z -m "Creating a feature branch of /project-x/trunk." svn checkout http://yourserver.com/svn/project-x/branches/feature-z… work …svn commit - m “committing my work." svn merge http://yourserver.com/svn/project-x/trunk --- Merging r20 through r45 into '.': U GridView.java 24
  • 32. Merge Tracking What has been merged so far? Which changes are available from trunk? svn propget svn:mergeinfo . /trunk:20-45 # or svn mergeinfo http://yourserver.com/svn/project-x/trunk r20r21…r44r45 svn mergeinfo http://yourserver.com/svn/project-x/trunk --show-revs eligible r46r47 25
  • 33. Merge Tracking Merging back your branch: What’s the catch? No support for renames moves Mergeinfo is sometimes generated when no merge was done $ cd /workspace/project-x/trunk$ svn merge --reintegrate http://yourserver.com/svn/project-x/branches/feature-z--- Merging differences between repository URLs into '.': … changes list …# build, test, verify, ... $ svn commit -m “Merging feature-z back into trunk!" 26
  • 34. More New Features Sparse checkouts Interactive conflict resolution Changelist support $ svn checkout URI --depth=[empty,files,immediates,infinity]# command support - checkout, switch, update, status, info $ svn up U project-x/trunk/GridView.javaConflict discovered in 'project-x/trunk/GridView.java'.Select: (p) postpone, (df) diff-full, (e) edit, (s) show all options: $ svn changelist bug-fix-1 GridView.javaPath 'GridView.java' is now a member of changelist 'bug-fix-1'.$ svn status --- Changelist ‘bug-fix-1': M GridView.java 27
  • 35. Upgrading to Subversion 1.5 Server Backup everything Install Subversion 1.5 Server Upgrade existing repositories with: Populate indexes (Optional): Upgrade clients Pray to god 28 $ svnadmin upgrade REPOS_PATH $ svn-populate-node-origins-index REPOS-PATH
  • 36. TortoiseSVN 1.5 29 TortoiseSVN is upgraded to support Subversion 1.5 The Merge process is simplified and merge tracking is supported The repository now more resembles the Windows explorer Changelist support is supported Hook Scripts and Issue Trackers are supported
  • 39. Agenda Introduction Branching Merging Subversion 1.5 DistributedVersion Control 32
  • 40. What is DVCS? Distributed VCS does NOT mean the physical distribution of the repository over several machines. Distributed VCS means the repository is located on your machine. 33
  • 41. Terminology In DVCS we… Do not check out from the repository, we clonethe repository. Do not update our working copy, we pullchanges from other repositories. Do not check in our changes,we pushchanges to other repositories. 34
  • 42. Advantages You are the repository Performance, no network overhead. Work offline, work where ever you want. Experiment, no commit rights required. Local Commits, the repository is in your workspace. Flexible repository topology 35
  • 43. Disadvantages But… Sparse checkouts are not fully supported if at all. Most vendors do not support branching, you must clone. Merge Tracking needs to mature a bit. More suited to Open Source projects than commercial. 36
  • 46. Decentralized with shared mainlineWorkflow 39
  • 48.
  • 49. Invented by Linus Torvalds to replace BitKeeper
  • 51. Used in - Linux Kernel, VLC, Ruby On Rails, Fedora, Android
  • 52. IDE Support - Eclipse, NetBeansIntelliJ (Native)Subversion is the devil, use Git. 41
  • 55. Git Pros & Cons 44 Pros Cons
  • 56.
  • 57. Started as a branch of Arch
  • 59. Used in - Ubuntu, MySQL, Drupal, APT, Linux Foundation
  • 60. IDE Support - Eclipse, IntelliJ (Native)45
  • 62. Bazaar Pros & Cons 47 Pros Cons
  • 63.
  • 64. Very Similar to Subversion
  • 65. Adopted by Sun Microsystems
  • 66. Used in - Mozilla, NetBeans, OpenJDK, OpenSolaris
  • 67. IDE Support - Eclipse, NetBeans,IntelliJ48
  • 70. Mercurial Pros & Cons 51 Pros Cons
  • 72. Conclusion And the Winner is? Experiment with the tools Choose the tool which works with your workflow 53
  • 73. References Subversion Home Page: http://subversion.tigris.org/ Tortoise: http://tortoisesvn.tigris.org/ SVNKit: http://svnkit.com/ Eclipse Plug-in: http://subclipse.tigris.org/ NetBeans Plug-in: http://subversion.netbeans.org/ Git Home Page: http://git.or.cz/ msysgit (Git Windows) : http://code.google.com/p/msysgit/ Eclipse Plug-in: http://git.or.cz/gitwiki/EclipsePlugin NetBeans Plug-in: http://code.google.com/p/nbgit/ 54
  • 74. References Mercurial Home Page: http://www.selenic.com/mercurial/wiki/ TortoiseHG: http://www.selenic.com/mercurial/wiki/index.cgi/TortoiseHg Eclipse Plug-in: http://www.vectrace.com/mercurialeclipse Bazaar Home Page: http://bazaar-vcs.org/ IDE Plug-ins: http://bazaar-vcs.org/IDEIntegration 55
  • 75. Thank You ! 56