CVS remove collant une étiquette sans mise à jour
CVS est vraiment me rend fou!
Est-il une astuce pour enlever collant balises sans mettre à jour le contenu du fichier?
Je sais de cv-Un", mais cela change aussi mes fichiers.
Ou dans l'autre sens:
Est-il possible de mettre à jour un répertoire complet à une date antérieure, sans réglage de collant balises en premier lieu?
Arrière-plan:
J'utilise une copie de travail qui est versionné à la fois avec CV et HG et j'ai tout fait foiré, donc je wan pas à reprendre le dernier point où il était synchroniser, puis vérifier ce qui est à venir à partir de CVS.
merci et salutations.
J'ai aussi, dès maintenant, suis-le contrôle de version avec les deux HG et CVS (HG pour mon propre confort, CVS parce que c'est le projet de l'héritage). J'ai fait similaire avec HG/GIT/CVS/RCS/BZR/... Nous avons besoin de trouver,. ou écrire nous-mêmes, un de ces multiples VCS de suivi.
OriginalL'auteur Peter | 2013-07-09
Vous devez vous connecter pour publier un commentaire.
Cela peut dépendre de la version de votre CV, et est livré avec la mise en garde qu'il n'est pas pris en charge, mais j'ai utilisé pour supprimer manuellement la balise collante à partir du CVS/Entrées de fichier. Je l'ai fait beaucoup quand j'ai voulu revenir à ma version de travail à une version antérieure, mais éviter la balise collante, de sorte que je pouvais juste mettre à jour normalement, quand je suis prêt.
Tout d'abord, juste mettre à jour le fichier de la version que vous voulez à partir du référentiel. Pour la propreté, j'ai été dans l'habitude d'enlever ma copie locale.
Ce sera bien sûr de vous laisser avec la balise collante.
Le collant tag est stocké dans le CVS/Entrées de fichier dans le dernier champ. Si vous regardez CVS/Entrées avec un éditeur de texte et la recherche de votre fichier, vous trouverez ceci:
Le T1.20 à la fin représente la balise collante. Vous pouvez simplement le retirer, laissant la ligne:
Maintenant, le collant l'étiquette est allé. Vous êtes dans le même état que vous seriez si quelqu'un avait vérifié dans une nouvelle version et que vous simplement n'ont pas encore été mis à jour.
Une fois que vous vérifiez que cela fonctionne sur un seul fichier, et obtenir courageux, vous pouvez faire tout le répertoire à la fois si vous le souhaitez, à l'aide de votre outil préféré (perl, awk, etc) pour modifier tous les fichiers dans le CVS/Entrées (ou uniquement les lignes que vous souhaitez modifier). Vous devez être prudent, bien sûr. J'utilise perl, et de garder un .sauvegarde de repli en cas de problème:
Heureusement, je n'ai pas à travailler sur l'héritage CVS projet plus, donc je n'ai pas testé cette réponse, mais je vais accepter ce que l'on a accepté la réponse, car elle est la plus proche de ce que je cherchais.
Le travail numéro de révision est à la fin plus bas que le référentiel. En conséquence, je ne peut pas valider la "récupéré" version nouveau. Le message d'erreur:
Up-to-date check failed for
. Ne il existe une solution?Si vous avez des changements locaux que vous souhaitez engager, c'est comme si quelqu'un avait commis une mise à jour. Vous devez d'abord "cvs update "monfichier", qui se fondra dans votre copie de travail tout changement dans le dépôt qui ont été commis entre votre version de travail et de la TÊTE. Vous devrez résoudre les conflits, mais vous serait alors laissé avec une normal "modifié Localement" fichier de travail qui est à la version du dépôt, et pourrait valider les modifications normalement.
Je ne peux pas croire il n'y a pas une option pour revenir à une ancienne étiquette de non-stickily. Dans mon cas, j'ai mis à jour un projet à la TÊTE. Mais il a des bugs. Alors, je veux revenir sur quelques fichiers à une balise précédente pour le faire fonctionner. Mais je ne veux pas rappeler il ya des collants balises qui ne sera pas mis à jour. Je veux être rappelé il y a des modifications en attente de la prochaine fois que je synchroniser mon projet.
OriginalL'auteur biomiker
Vous pouvez utiliser l'option-p pour "cv" pour écrire sur la sortie standard, ce qui vous permet de rediriger vers le fichier d'origine à l'aide de la ">". Cela évite l'adhérence.
OriginalL'auteur rdb
Le collant de la balise est là pour vous rappeler que vous n'êtes pas dans la TÊTE. Si vous livrez des changements, ils ne vont pas y aller alors. Et juste de retirer le collant balise pourrait être dangereux dans des situations normales.
Je pense que la meilleure façon de le faire est de créer un patch à partir de la date de dépôts ont été la synchronisation de la mise à jour de la copie. Puis appliquer le patch inversée. Créer un patch avec vos modifié, les changements et de les appliquer sur l'autre référentiel.
Sur une surface propre (mais pas synchronisés repo):
$ cvs diff -R -D date_when_synced >patchfile
$ patch -R -pNUM <patchfile
Puis dans le repo vous faites les modifications que vous ne voulez pas perdre avec
cvs up -A
:$ cvs diff -R >patchfile2
Puis appliquer le patch dans le "nettoyer" référentiel:
$ patch -pNUM <patchfile2
Je pense que cela pourrait faire ce que vous voulez, si j'ai bien compris.
OriginalL'auteur Jean Waghetti