Un de mes collègues a complètement chamboulé le contenu d'un répertoire de notre dépôt CVS principal. J'ai besoin de remettre tout le module dans l'état où il était à la fin de l'année dernière. Quelle est la commande CVS pour faire cela, s'il vous plaît ?
Il a ajouté et supprimé des centaines de fichiers, donc un simple "copier les fichiers de l'ancien checkout et commit" n'est pas suffisant.
J'ai RTFM et STFW, et j'ai essayé ceci :
cvs co modulename # Note no -P option
cvs up -jHEAD -jMAIN:2008-12-30 modulename
Mais cela ne fonctionne pas - les nouveaux fichiers qu'il a créés sont supprimés, mais les anciens fichiers et répertoires ne sont pas ressuscités. (Je ne l'ai pas committé).
Je peux probablement écrire un shell script pour cela, mais cette fonctionnalité doit sûrement être déjà dans le CVS ?
Mise à jour : Quelques clarifications :
-
Je peux obtenir un caisse locale du module à une date précise. La question est de savoir comment récupérer cela dans le CVS.
-
J'ai des sauvegardes, mais l'intérêt d'un système de contrôle de révision comme CVS est qu'il est censé être facile d'obtenir tout état historique. La prochaine fois que quelque chose comme ça se produit, je n'aurai peut-être pas la chance d'avoir des sauvegardes (par exemple, les sauvegardes sont quotidiennes, donc je peux perdre jusqu'à une journée de travail).
-
Je sais que CVS est vieux, et que nous devrions passer à quelque chose de plus récent. Mais dans une grande équipe avec un grand nombre d'outils basés sur CVS (scripts de vérification et de construction, serveur de construction nocturne, etc.), le coût en temps d'une telle migration est considérable. (Évaluation, mise à jour des scripts, tests, migration, formation, perte de temps des développeurs, maintien des deux systèmes en parallèle car CVS serait toujours nécessaire pour les anciennes branches). C'est pourquoi cette opération doit être planifiée et programmée par la direction.
Mise à jour n°2 : Je vais lancer une prime sur ce sujet. Pour bénéficier de la prime, vous devez expliquer comment revenir en arrière en utilisant les commandes CVS normales, pas avec un shell script.
Mise à jour n°3 : Le serveur est CVS 1.12.13 . L'accès se fait via pserver. Je peux utiliser la même version de CVS sur un PC Linux, ou l'application CVSNT 2.0.51d sur Windows.