I have worked with Source Control softwares like VSS, TFS, ClearCase, SVN, etc. but my work has primarily been centered around the typical source control operations like get latest, add new files, etc. I want to have a more in-depth understanding of the basic source control concepts like versioning strategies, concepts of a trunk and branch, merge and fork operations, tags and history views. These should be agnostic to the package that is being used and should discuss about the general concepts and best practices. Can anyone point out a good book or internet resource to learn about these concepts.