View a Git Graph of your repository, and easily perform Git actions from the graph. Configurable to look the way you want! Features
Extension SettingsDetailed information of all Git Graph settings is available here, including: descriptions, screenshots, default values and types. A summary of the Git Graph extension settings are:
This extension consumes the following settings:
Extension CommandsThis extension contributes the following commands:
Release NotesDetailed Release Notes are available here. Visual Studio MarketplaceThis extension is available on the Visual Studio Marketplace for Visual Studio Code. AcknowledgementsThank you to all of the contributors that help with the development of Git Graph! Some of the icons used in Git Graph are from the following sources, please support them for their excellent work!
|
Using Version Control in VS Code. Visual Studio Code has integrated source control management (SCM) and includes Git support in-the-box. Many other source control providers are available through extensions on the VS Code Marketplace. I finally managed to make it work, using PuTTY's Pageant authentication agent instead of ssh-agent, and following the steps mentioned here (it's for Visual Studio Code, but works for Visual Studio 2017 and I guess it should work for any application that uses the 'official' Git for Windows). This will make Visual Studio essentially a Git-only tool. If you want to open code files, then you can load the solution or folder later. Preference to load code when opening repositories. Pending changes. The Changes button in the status bar shows the number of changed files that haven’t been committed yet. It provides a shortcut to open the.
Disclaimer: I’m not a Git guru, so information in this post might not be the most accurate, it just works on my machine and wanted to share my experience.
I take for granted that you are a Visual Studio user, that you use Git using the Visual Studio plugin and, like me, have the need to work on projects where you need to share code hosted in its own separate repository among different solutions.
I know that there are several solutions for this, as example using Nuget packages for shared code, but none of them reaches the flexibility that using source code offers, both in terms of debugging and real time bug fixing.
Ok, not ‘technically correct’ I know, but it works, and I love things that works and make my life easier.
Since I’m not the only one with this need I checked online and found that, among different alternatives, the most voted one (with also several opponents indeed) is to use Git SubModules that, to make it simple, are nothing more than repositories embedded inside a main repository.
In this case, the submodule repository is copied into a subfolder of main one, and information about the original module are also added to main repository this means that when you clone the main project also all submodules are cloned.
Submodules in action
Let’s create our fist project that uses a git submodule, fasten your seat belt and enjoy the journey.
I’ve created two UWP projects (but you can use any kind of project of course…) a main UWP application SubModulesApp and a UWP library named SubModulesLib, each one has its own repository hosted on github.com.
I now have the need that SubModulesApp must use some services contained inside SubModules lib and once I start using the lib, is evident that both repos will have a string relationship so, even if i could keep them separated and just reference local SubModulesLib project from main app, the best solution is to create a submodule, this also gives us the benefit to keep submodule on a different commit compared to the ‘master’ one in case we need it.
Let’s start and open our empty app in Visual Studio:
Now open a Visual Studio command prompt at solution folder, if you use Visual Studio PowerCommands, just right click the solution node and select Power Command –> Open Command Prompt.
Let now type: git submodule add <Path to your git repository> <foldername> and your project will be cloned into <foldername>
here’s an example of what I’ve got on my machine
and here’s project folder structure
Now you can add the Lib project inside MyAwesomeLib folder to SubModulesApp project
Consume the Lib services and push everything back to github.
Let’s now make an important test: What if lib author updates the code in SubModulesLib? will I get the changes if when I pull SubModulesApp?
To test it I’ve added a comment to MyCalculator.cs class and pushed the change back to original repository, I then pulled the SubModulesApp that uses the lib as submodules and, unfortunately, the change is not there so, it looks like that what we get here is a copy, or, to better say, something not pointing to the latest commit.
To see the changes we need to open the solution from inside our nested folder (in this case MyAwesomeLib) and pull the changes from there, totally annoying stuff that could be avoided if Git plugin for Visual Studio would support multiple repositories (please vote for this feature here: https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/8960629-allow-multiple-git-repositories-to-be-active-at-on)
What about the opposite? If I do a modification of code inside a submodule, will it be pushed back to the original repository? (in our case from inside SubModuleApp solution) unfortunately not, as before you need to push changes from the instance of Visual Studio that hosts the SubModuleLib residing inside MyAwesomeLib folder doing that properly aligns the original source repository.
All this works because we are working on the project where submodule was created, if someone else need to clone and work on the same project the following steps must be done:
Git For Visual Studio
1-Clone the project from Visual Studio (or manually if you’re an hypster…)
2-Open a VS Command Prompt at solution level and issue this command: git submodule update –init –recursive
3-Open each submodule under main solution, and checkout the associated branch using Visual Studio plugin (you will see that it results in detached state)
Visual Studio Git Repository Window
Now your cloned solution’s submodules are attached to original repositories and everything works as previously described.
Visual Studio Connect To Git
A bit tricky for sure, at least until Visual Studio Git plugin won’t support multiple repositories. but once project is properly initialized is just a matter of remembering to open the submodule project each time you need to interact with git.