{"thread":{"id":"21615","subject":"[PATCH] cvsserver doc: database generally can not be reproduced consistently","startedAt":"2009-11-14T18:39:36Z","lastAt":"2009-11-14T18:39:36Z","messageCount":1,"participants":["Matthew Ogilvie"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"127552","messageId":"1258223976-4044-1-git-send-email-mmogilvi_git@miniinfo.net","threadId":"21615","inReplyTo":null,"subject":"[PATCH] cvsserver doc: database generally can not be reproduced consistently","fromName":"Matthew Ogilvie","fromEmail":"mmogilvi_git@miniinfo.net","sentAt":"2009-11-14T18:39:36Z","receivedAt":"2009-11-14T18:39:36Z","isPatch":true,"sender":{"key":"mmogilvi_git@miniinfo.net","avatar":null},"body":"A regenerated git-cvsserver database is at risk of having different\nCVS revision numbers from an incrementally updated database.  Mention\nthis in the the documentation, and remove an erroneous statement\nto the contrary.\n\nSigned-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>\n---\n Documentation/git-cvsserver.txt |   19 +++++++++++++++----\n 1 files changed, 15 insertions(+), 4 deletions(-)\n\ndiff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt\nindex 785779e..99a7c14 100644\n--- a/Documentation/git-cvsserver.txt\n+++ b/Documentation/git-cvsserver.txt\n@@ -182,10 +182,9 @@ Database Backend\n ----------------\n \n 'git-cvsserver' uses one database per git head (i.e. CVS module) to\n-store information about the repository for faster access. The\n-database doesn't contain any persistent data and can be completely\n-regenerated from the git repository at any time. The database\n-needs to be updated (i.e. written to) after every commit.\n+store information about the repository to maintain consistent\n+CVS revision numbers. The database needs to be\n+updated (i.e. written to) after every commit.\n \n If the commit is done directly by using `git` (as opposed to\n using 'git-cvsserver') the update will need to happen on the\n@@ -204,6 +203,18 @@ write so it might not be enough to grant the users using\n 'git-cvsserver' write access to the database file without granting\n them write access to the directory, too.\n \n+The database can not be reliably regenerated in a\n+consistent form after the branch it is tracking has changed.\n+Example: For merged branches, 'git-cvsserver' only tracks\n+one branch of development, and after a 'git-merge' an\n+incrementally updated database may track a different branch\n+than a database regenerated from scratch, causing inconsistent\n+CVS revision numbers. `git-cvsserver` has no way of knowing which\n+branch it would have picked if it had been run incrementally\n+pre-merge. So if you have to fully or partially (from old\n+backup) regenerate the database, you should be suspicious\n+of pre-existing CVS sandboxes.\n+\n You can configure the database backend with the following\n configuration variables:\n \n-- \n1.6.4.GIT\n"}]}