Thanks for taking that on board.
Let's not specify git; I'll talk about source control in general, and try to explain a little clearer.
Facts (Please correct me if I'm wrong about Visual Micro):
> Users might want to write their own libraries. And version control them.
> Visual Micro can only keep it's libraries in a couple of places:
C:\Users\<user>\Documents\Arduino\libraries
or
( one custom location for the VM install? e.g. C:\Arduino\arduino-1.5.2\libraries )
and I'm guessing, all projects compiled in Visual Micro on that machine must reference the same unique collection of libs.
> For a single project that is downloaded from source control, I must reference libraries that already exist on that computer, in
one of the two places we can define.
Problem: Changing computers: I might go to another computer and find that my source is referencing library folders that are outdated. I might not have used that computer in a while, so suitably, I would want my libraries version controlled.
Problem: (On the same machine) Loading and Compiling projects that require different versions of libraries: I could include the required libraries in my project source, version controlled, and reference them using Visual Micro, but what happens if I choose to pull down a different project from my source control, that references all the same libraries, except different versions? Or even an older copy of the same project?
This is why each and every individual *.vcxproj project file should be allowed to reference it's own libraries through relative paths and Visual Micro needs to wire it all up on load/compile. Project references should be
machine independent