{"thread":{"id":"1208","subject":"[PATCH] document CVS vs. git tags","startedAt":"2005-07-12T07:29:33Z","lastAt":"2005-07-12T07:29:33Z","messageCount":1,"participants":["Matthias Urlichs"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"6023","messageId":"20050712072933.GA28506@kiste.smurf.noris.de","threadId":"1208","inReplyTo":null,"subject":"[PATCH] document CVS vs. git tags","fromName":"Matthias Urlichs","fromEmail":"smurf@smurf.noris.de","sentAt":"2005-07-12T07:29:33Z","receivedAt":"2005-07-12T07:29:33Z","isPatch":true,"sender":{"key":"matthias@urlichs.de","avatar":"https://gravatar.com/avatar/2708905af227313eba6f2b2ae0f7d0259b5ac5d71baef58fe5a13c699ce0bbf0?d=mp&s=160"},"body":"CVS uses tags for lots of things.\nGit doesn't.\nDocument that, so people may understand.\n\ndiff --git a/Documentation/cvs-migration.txt b/Documentation/cvs-migration.txt\n--- a/Documentation/cvs-migration.txt\n+++ b/Documentation/cvs-migration.txt\n@@ -230,3 +230,33 @@ that contain this changed \"if\" statement\n [ Side note.  This option is called \"--pickaxe-all\" because -S\n   option is internally called \"pickaxe\", a tool for software\n   archaeologists.]\n+\n+\n+\n+Tagging, Branching and Merging\n+------------------------------\n+\n+In CVS, you need tags for three different (and conflicting) use cases:\n+\n+* Mark the state of you repository at a given point in time.\n+\n+  \"This is version 0.2.\"\n+\n+* Name a branch, i.e. semi-separate line of development.\n+\n+  \"I'm now working on what's going to be version 0.3.\"\n+\n+* Remember where you last merged from so that you won't mess up your\n+  changes later.\n+  \n+  \"Did we integrate that important bugfix from 0.2.1 into 0.3 yet?\"\n+\n+\n+Git has different features for each of these uses.\n+\n+* You mark the current (actually, last-checked-in) state with \"git tag\".\n+\n+* You start a new branch with \"git checkout -b <name>\".\n+\n+* Git keeps track of what-got-merged-to-where internally.\n+\n"}]}