Join Michael Lehman for an in-depth discussion in this video Examining shell integration, part of Learning Software Version Control.
We've looked at command line interfaces for Version Control, GUI interfaces for Version Control, IDE integration for Version Control, and finally the last way you can access Version Control is through a process called shell integration. This means that instead of just looking at the project file inside your IDE, you can actually look at the file in directory tree inside the Windows Explorer or the Macintosh Finder, or their equivalent on Linux, and actually look at the files in your working set where they live and interact with Version Control there. That allows you to add files, check files in, check files out, revert, all from right inside whatever the shell is that you're currently using.
It can show you which files are up to date, which files are checked out, which files have pending changes, sometimes even which files have conflicts. The way they do this is by providing context menus so that you go to a file or a directory and right-click, and you'll see a series of context menus that allow you to check in and check out. They also have visual status indicators, such as green dots for files that are checked in and red check marks for files that are checked out and so forth. So let's take a look at the shell integrations available for Windows and for Macintosh for the five Source Code Control providers we're looking at in this course.
First, for Windows there is a product called TortoiseSVN. This is a Windows Explorer extension for using Subversion with Windows. Perforce provides a product called the Perforce Plug-in for Windows Explorer that adds a Perforce menu to the standard Explorer context menu in Windows. For Team Foundation Server, Microsoft provides the Team Foundation Server Power Tools. While this is not part of the released Visual Studio product, it is something that is kept up to date with every release of Visual Studio and provides, not only Windows Explorer integration, but provides a number of additional facilities.
If you're using TFS, I highly recommend getting the Team Foundation Server Power Tools. For Git, there is an open-source project over here on code.google.com called TortoiseGit that provides something similar to TortoiseSVN but for Git. As you can see here in the Context menu, you can Pull and Fetch and Push and Show the logs and Resolve, Revert. Everything that you can do on the command line, you can do from this Context menu. And the final integration for Windows is TortoiseHG, which is again, Tortoise for Mercurial, and you can see here it allows you to Add Files and Revert Files.
And here you can see an example of the kinds of icons that are enhanced when using one of these shell extensions. Here you can see files that are checked in, files that still need to be added, files that have a conflict. Similarly, for the Macintosh there is a product here called SCPlugin, which is Subversion. They call it here a file-icon badging and commands from Finder. Essentially, it creates a context menu in the Finder that has Subversion commands on it. Similarly, DeltaWalker is an equivalent functionality for Git that does Finder extensions.
And over here in Bitbucket, this Mercurial Finder Integration project is relatively new, but someone is in the process of trying to provide the Mercurial functionality as a Finder integration. So we've looked at the four different ways that you can interact within your Version Control software, there is the command line, there is stand-alone GUI tools, there is IDE integration, and finally there is shell integration that allows you to add context menus to the Macintosh Finder or the Windows Explorer.
- Comparing centralized vs. distributed systems
- Saving changes and tracking history
- Using revert or rollback
- Working with the GUI tools
- Using IDE and shell integration
- Installing different systems
- Creating a repository
- Tagging code
- Branching and merging code
- Selecting a software version control system that's right for you