Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

My team is entering into some discussions on source control (process and possibly tools) and we would like a tool agnostic terminology for the various activities. The environment does have multiple (old) VCS's, and multiple desired (new) VCS's. Is there a standard definition of activities, or at least some commonly accepted set?

Example activities (in CVS terminology):

  • Branch
  • Check out
  • Update
  • Merge
share|improve this question
5  
No, but they're on my Christmas list. Please, Santa! –  pdr Dec 5 '12 at 20:20
3  
Among centralized ones and among distributed ones the language is pretty similar. Some of the vocabulary won't map well across the two different types just because conceptually they are different. –  R0MANARMY Dec 5 '12 at 20:22
    
I think it could be confusing to have one set of agnostic terminology. Why do you want agnostic terminology? What are you trying to achieve? –  Johan Karlsson Dec 5 '12 at 20:37
3  
@Johan - I assume he wants one because they want to be able to have an intelligent discussion about the options on the table. A set of common terms to describe something that we do every day would actually be nice - infact, that lack of set of common terms could be taken as a indication of lack of maturity of the technology (or those using it in this case, given its been in use for 50 years) –  mattnz Dec 5 '12 at 20:52
2  
@R0MANARMY : In most real world cases I have seen, there is not a lot of difference between how DVCS and centralized ones are used on a daily bases. Even where the power of DVCS is utilized, it's through a set of recipe commands. As such - although conceptually different, to all practical purposes it is theoretical for most developers - therefore common terminology for the daily workflow performed by developers is quite easy. –  mattnz Dec 5 '12 at 21:16
show 4 more comments

4 Answers

As said by @pdr - I am not aware of a set of formally recognized terms. Those used by commonly SVN/CVS are universally understood - repo/checkout/commit etc. Personally I would use this Wikipedia Page.

You should do is create a glossary of terms, based on Wikipedia, and within your team, ensure that you use those terms in all documents. Once complete - consider updating the Wikipedia page.

Edit : -From a comment I made.... In most real world cases I have seen, there is not a lot of difference between how DVCS and centralized ones are used on a daily bases. Even where the power of DVCS is utilized, it's through a set of recipe commands. As such - although conceptually different, to all practical purposes it is theoretical for most developers - therefore common terminology for the daily workflow performed by developers is quite easy.

For instance, @Kaz argues that a Git Clone is a repository- which technically is correct. Practically for most developers it is not treated as anything other than a local copy of a master repository and the actions the perform on it are essentially the same as they do on a CVS checkout - Clone / branch / check in / merge / update push (Git) or "Merge into master branch" (CVS/SVN etc). Litmus test - do you backup the clone every night. If not, it's not a repository, it's a working copy.

Yes - the recipe is different, but the cake tastes surprisingly similar in typical cases.

share|improve this answer
add comment

Well, to some degree "lingua franca" in SCM exist now, if we'll ignore the extremes of old and new school:

  • Checkout
  • Commit
  • Update
  • Repository
  • Working Copy
  • Merge

have common sense in all (with notes above) first-class citizens in SCM-world

share|improve this answer
1  
I saw that. I'm saying that your "to some degree" barely covers SVN and Mercurial. So it's a completely wrong and misleading answer to the question asked. –  pdr Dec 5 '12 at 21:58
2  
... and Bazaar and Fossil. >50% of market share can't be "misleading", kid! –  Lazy Badger Dec 5 '12 at 22:04
2  
@pdr and lazy... He's not asking for a same set of commands, he's asking for a common terminology for evaluation- If the question is "checkout the latest source" and you are using hypothetical "Acme RCS 1.0", do you know what is meant?. –  mattnz Dec 5 '12 at 22:12
1  
Clearcase, which in my opinion is a first-class citizen, has a very different meaning for checkout and a very different approach wrt working copies –  mouviciel Dec 5 '12 at 22:29
10  
checkout is completely ambiguous. In some SCMs it means "indicate the intent to modify the element, possibly with an exclusive lock". Whereas in others it just means "obtain a working copy". –  Kaz Dec 5 '12 at 22:31
show 8 more comments

Since each source control tool IS so different, I don't think you will be able to find this vendor-agnostic list of terms that you seek; especially since some of the same words are used for different things between source control tools.

These source control tools all work very differently; some are decentralized, some are not. Some are based on changesets, others are based on snapshots. So you should base your terminology on the tool you will be using.

share|improve this answer
    
update is equal in SVN and Mercurial. svn up ID == hg up ID: svn - "Bring changes from the repository into the working copy", Mercurial - "Update the repository's working directory to the specified changeset". RTFM –  Lazy Badger Dec 5 '12 at 21:43
    
But in git, your working copy is a repository, oops. –  Kaz Dec 5 '12 at 22:36
    
@Kaz: WTF??? Local repo in git physically - .git dir inside Working Copy –  Lazy Badger Dec 6 '12 at 10:32
    
@LazyBadger Fair enough, maybe I gave a bad example. However, I believe my answer is still valid, so I have removed the update example and left the rest of the answer unchanged. –  CFL_Jeff Dec 6 '12 at 15:14
1  
Other version control systems also have a .<whatever> directory or similar, but it is not a repo. Every git working copy is also a repo. No repo, no working copy. –  Kaz Dec 6 '12 at 22:01
show 2 more comments

Just (learn and) use Git's terminology. Git is the current gold standard of vcs. If a feature doesn't exist in Git, use the word from whatever system it exists in.

edit for pedantry: There is of course a subset of terminology that has the same meaning in several tools. I think defining that subset is subjective and somewhat meaningless, it's much better to learn about Git and use Git's terminology. So the answer to your question is yes and no.

share|improve this answer
4  
This really doesn't answer the question. While the tool may be popular, the question was for terminology that was not tool specific. What happens if no one on his team has ever seen or used Git? –  Walter Dec 6 '12 at 16:02
2  
@Minthos The point is to be able to discuss all the available tools and the process in a way that the team can all understand. Shilling for Git doesn't help that in any way. –  C. Ross Dec 6 '12 at 16:25
2  
Gitboys... Oh, God, no, please!!! Except fact of unwanted ads here, Git actively refuse to use conventional revision control terminology. "Sorry, you use checkout to revert a commit? And checkout also switches between branches? revert is like a merge? WTF?" (c) André Pang –  Lazy Badger Dec 6 '12 at 16:51
2  
The git command line utilities are for complete masochists. You have to understand the semantics of the git implementation to use it effectively, and to know how to respond in every scenario. And it doesn't even handle renaming (directory structure versioning). –  Kaz Dec 6 '12 at 22:04
2  
Given that, among other things, what Git calls a "branch" isn't actually a branch (it's more akin to what anyone with any sense would call a tag, a label or a bookmark), and that a "fast forward merge" doesn't actually merge anything, Git is not exactly a shining example in terms of terminology. –  jammycakes Dec 7 '12 at 11:57
show 4 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.