In reading the wikipedia article article on revision control, I found some terms that seem ambiguously-defined, and was wondering how they are actually used/applied in the real world. Specifically:
- "Mainline" vs "Baseline"
- "Branch" vs "Stream"
- "Checkout" vs "Update"
- "Vendor" folder vs artifact repo (like Maven or Ivy)
I am a contextual learner, so any concrete examples you could give would help the lightbulbs turn on a lot better.
With regards to the last one, what I mean is this:
At least in svn
it is fairly standard to have a VC project structure of:
svnrepo/
someProject/
trunk/
branches/
tags/
vendor/
Where vendor/
is a place to put external/3rd party dependencies that your configurations rely on. Alternatively, I've seen developers use tools like Maven or Apache Ivy to pull/publish artifacts (JARs and such) to/from a repository, such as an SFTP server. So when do you put 3rd party dependencies in your SCM under vendor/
, and when do you put these dependencies in your Maven/Ivy repo?
Thanks in advance for clarification on any of these items!