I was wondering, are there any ways in which specific languages (C++, Java, Python, Haskell, etc) are especially suited more to one VCS than others? Maybe due to syntax or other factors?
Or should c开发者_开发百科hoosing a VCS always be unaffected by such concerns?
All VCS' I know are content agnostic, you can store binary or text (ASCII/UTF-8) files. One possible factor for choosing a VCS is development OS support (example: git has bad windows support) and IDE integration, which may be language-specific.
As to whether a VCS should be unaffected by such concerns, I truly believe so. At the same time it should be flexible enough to let other tools do language and project specific things (most VCS do this through hooks).
The content you put in a VCS can matter for:
storage: the way the delta is stored can differ for simple texts, Microsoft Word documents, UML models (Rational
.rose
files), html pages, ...
See for instance ClearCase type manager as an example of VCS managing the storage based on element content.merge: merging can be done differently based on the content of the versioned files through:
- internal algorithm (if the VCS has type manager)
- external third-party merge tools which can infer some "intelligent" merge tactics based on the extension and content of the file.
Regarding your question, the programing language within versioned files is to my knowledge never a criteria for storing or merging: they (the files) are just text.
If they are treated differently, it would be only during the merge process, and only if an external merge tool is smart enough to perform an "intelligent" merge of some kind based on the file content.
But the VCS itself is generally not involved in that special merge (for source files considered as text).
It doesnt matter to the VCS what you put in it, (you might not even have code in it) but the way you use it does. Most IDEs can integrate with some, but not all version control systems. Picking a VCS your IDE can integrate (either nativly or with plugins) with will provide provide a significant benefit.
With that said, if the choice is between a VCS with no IDE support or no VCS at all, always ALWAYS use VCS.
The thing that tends to make a differences average size of source file. Some lanuages and coding styles tend to lead to 10000+ line code files. In that case, you absolutely need a merge-based, branching tool. With smaller code files, there is much less chance someone else will be making an unrelated change in the same file, and so a tool/policy that works mostly by locking, with only occasional merges, works well.
精彩评论