Existe-t-il un moyen d'obtenir un statut CVS court depuis la ligne de commande?

StackOverflow https://stackoverflow.com/questions/211819

  •  03-07-2019
  •  | 
  •  

Question

Lorsque vous effectuez une mise à jour cvs , vous obtenez un résumé de l'état du référentiel, par exemple:

M src/file1.txt
M src/file2.txt
C src/file3.txt
A src/file4.txt
? src/file5.txt

Y at-il un moyen d’obtenir cela sans mettre à jour réellement? Je sais qu’il existe un statut cvs , mais c’est une façon de parler:

===================================================================
File: file6.txt        Status: Up-to-date

Working revision:    1.2
Repository revision: 1.2     /var/cvs/cvsroot/file6.txt,v
Sticky Tag:          (none)
Sticky Date:         (none)
Sticky Options:      (none)

Je pourrais bien sûr créer un script pour effectuer la transformation de ce dernier en ancien, mais cela semble une perte de temps, car cvs peut évidemment produire le premier.

Était-ce utile?

La solution

Vous pouvez utiliser l'indicateur -n pour obtenir le résultat de la mise à jour sans mettre à jour les fichiers. Vous pouvez également ajouter -q (quiet) pour supprimer tous les messages du serveur.

cvs -q -n update

Autres conseils

@jmcnamara: bon conseil!

Et tout ce temps, j'utilise ce script bash:

cvs -q status "$@" | grep '^[?F]' | grep -v 'Up-to-date'

J'ai des alias, cela peut être utile à quelqu'un:

alias cvsstatus_command='cvs -q status | grep "^[?F]" | grep -v "Up-to-date" | \
    grep -v "\.so" | grep -v "\.[c]*project"'

alias cvsstatus_color='nawk '"'"'BEGIN \
    { \
        arr["Needs Merge"] = "0;31"; \
        arr["Needs Patch"] = "1;31"; \
        arr["conflicts"] = "1;33"; \
        arr["Locally Modified"] = "0;33"; \
        arr["Locally Added"] = "0;32" \
    } \
    { \
        l = <*>; \
        for (pattern in arr) { \
            gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); \
        } \
        print l; \
    }'"'"

alias cvsstatus='cvsstatus_command | cvsstatus_color'

Ceci affichera uniquement les noms de fichiers et leur statut, ignorera tous les fichiers mis à jour, supprimera tous les fichiers de projet eclipse et les objets partagés et imprimera également les lignes dans des couleurs différentes, en fonction de l'état (par exemple, j'ai orange pour les modifications locales, le rouge pour les fichiers nécessitant une fusion; le vert pour les ajouts locaux, etc.)

Si vous utilisez CVSNT, vous pouvez également créer cvs status -q , qui produira également une sortie beaucoup plus brève que la commande de statut normal (une seule ligne par fichier également). Avec les versions plus récentes, vous pouvez même utiliser cvs status -qq pour ignorer les fichiers mis à jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top