2010-06-08 5 views
68

Existe-t-il une commande dans mercurial qui liste tous les fichiers actuellement sous le contrôle de la source?Comment lister tous les fichiers dans un référentiel dans Mercurial (hg)?

Je peux faire un dir /s pour lister tous les fichiers de mon dossier et de mes sous-dossiers, mais je n'ai aucune idée de ceux qui ont été ajoutés à mon dépôt. J'ai une variété de types de fichiers et dossiers exclus et je veux vérifier qu'aucun d'entre eux n'a été ajouté avant que je les configure dans mon fichier .hgignore.

+0

Vous devriez jeter un oeil à ce post: http://mercurial.808500.n3.nabble.com/List-files-in-a-directory-td949176.html#a949176 – Pedro

Répondre

68

hg status --all listera tous les fichiers dans l'arborescence, avec une lettre indiquant son statut: M pour modifié, C pour clean (appartenant à hg), et I pour ignoré.

Pour ignoré fichiers, utilisez hg status -i. Pour les fichiers qui seront ajoutés lors de la prochaine validation, utilisez hg status -a. Ceux-ci montrent seulement ce que vous devez savoir et ne nécessitent pas de scanner une longue liste de fichiers.

+2

Puisque d'autres pourraient regarder ici pour l'information, j'ai pensé que je mentionnerais ma nouvelle extension de hglist qui donne à Mercurial une commande "ls": http://alastairs-place.net/projects/hglist/ – alastair

+2

'hg st -A' est la version abrégée de la commande mentionnée ci-dessus. –

+8

Bonne réponse, mais elle ne répond pas directement à la question. Avec un état de fonctionnement propre, 'hg status -c' répertorie tous les fichiers suivis et uniquement les fichiers suivis. Avec d'autres changements, 'hg status -carmd' fera l'affaire. Ajoutez '-n' pour exclure l'indicateur d'état. – undefined

19

hg manifest listera uniquement les fichiers dans le référentiel, tandis que hg status --all listera tous les fichiers dans la structure du référentiel et inclura un marqueur dont ils sont suivis et ceux qui ne le sont pas.

+1

Cela me donne exactement ce que je voulais, malgré le léger inconvénient qu'il ne peut pas être rétréci par un dossier comme l'OP voulait. C'est toujours mieux que la réponse acceptée. –

-4
 
C:\>hg help -v status 
hg status [OPTION]... [FILE]... 

aliases: st 

show changed files in the working directory 

    Show status of files in the repository. If names are given, only files 
    that match are shown. Files that are clean or ignored or the source of a 
    copy/move operation, are not listed unless -c/--clean, -i/--ignored, 
    -C/--copies or -A/--all are given. Unless options described with "show 
    only ..." are given, the options -mardu are used. 

    Option -q/--quiet hides untracked (unknown and ignored) files unless 
    explicitly requested with -u/--unknown or -i/--ignored. 

    NOTE: status may appear to disagree with diff if permissions have changed 
    or a merge has occurred. The standard diff format does not report 
    permission changes and diff only reports changes relative to one merge 
    parent. 

    If one revision is given, it is used as the base revision. If two 
    revisions are given, the differences between them are shown. The --change 
    option can also be used as a shortcut to list the changed files of a 
    revision from its first parent. 

    The codes used to show the status of files are: 

     M = modified 
     A = added 
     R = removed 
     C = clean 
     ! = missing (deleted by non-hg command, but still tracked) 
     ? = not tracked 
     I = ignored 
     = origin of the previous file listed as A (added) 

options: 

-A --all    show status of all files 
-m --modified  show only modified files 
-a --added   show only added files 
-r --removed   show only removed files 
-d --deleted   show only deleted (but tracked) files 
-c --clean   show only files without changes 
-u --unknown   show only unknown (not tracked) files 
-i --ignored   show only ignored files 
-n --no-status  hide status prefix 
-C --copies   show source of copied files 
-0 --print0   end filenames with NUL, for use with xargs 
    --rev    show difference from revision 
    --change   list the changed files of a revision 
-I --include   include names matching the given patterns 
-X --exclude   exclude names matching the given patterns 

global options: 
-R --repository  repository root directory or name of overlay bundle file 
    --cwd    change working directory 
-y --noninteractive do not prompt, assume 'yes' for any required answers 
-q --quiet   suppress output 
-v --verbose   enable additional output 
    --config   set/override config option (use 'section.name=value') 
    --debug   enable debugging output 
    --debugger  start debugger 
    --encoding  set the charset encoding (default: cp1252) 
    --encodingmode set the charset encoding mode (default: strict) 
    --traceback  always print a traceback on exception 
    --time   time how long the command takes 
    --profile   print command execution profile 
    --version   output version information and exit 
-h --help   display help and exit 
+4

Drôle comment ma réponse continue à être dépréciée année après année. Mais est-ce vraiment si mauvais de dire aux gens de lire le manuel? Est-ce que stackoverflow a invalidé la documentation? Est-ce que les gens ont arrêté d'utiliser '--help' /' /? '/' Man' et d'autres documentations parce qu'il est plus rapide de demander sur stackoverflow que de lire? Je refuse d'enlever ma réponse :) – simendsjo

+0

Heh, eh bien, vous pouvez avoir un vote pour moi, car c'est la réponse la plus utile ici. Je n'en écrirai pas un autre sur la base de ce que j'ai découvert et je verrai si je reçois des upvotes :-) – Benjohn

+1

Pour ce que ça vaut, ta réponse est géniale. Mais un utilisateur doit savoir que 'status', comme l'une des commandes' hg' le fera en premier lieu. J'utilise Mercurial tous les jours et je ne savais pas qu'il pourrait être demandé de montrer les fichiers ignorés. – Benjohn

57

Vous pouvez également consulter la commande hg locate. Je l'utilise, avec l'option -I lorsque je veux limiter les fichiers à un certain répertoire.

Pour lister tous les fichiers dans votre répertoire:

hg locate 

À partir du dépôt (« root ») répertoire:

hg locate -I dir/sub_dir/dir_of_interest 

Le chemin est passé à -I doit changer en fonction du répertoire dans lequel vous exécutez la commande. Si vous exécutez la commande à partir du répertoire dir dans l'exemple ci-dessus, vous auriez besoin de modifier votre argument pour localiser:

hg locate -I sub_dir/dir_of_interest 

La liste des fichiers de sortie restent les mêmes, montrant le chemin complet de chaque fichier dans le référentiel .

Essayez hg help -v locate pour plus d'informations.

+2

Juste ce dont j'avais besoin, merci. C'est une meilleure réponse pour quelqu'un qui a juste besoin de lister les fichiers suivis. –

+1

'hg loc' est la version abrégée de la commande mentionnée ci-dessus. –

+3

Ceci est la vraie réponse. La réponse de Ned est un non-démarreur. –

3

seulement une liste négligeaient ou les fichiers ajoutés

Pour afficher la liste ne les ignorés fichiers, faire: hg status -i.

Pour juste a ajouté fichiers, faire hg status -a. Si vous n'aimez pas taper beaucoup, vous pouvez les raccourcir à hg sta -i et hg sta -a.

Ces deux utilisations de status sont plus simples que locate et vous donneront les états de fichiers spécifiques qui vous intéressent, donc il est significativement moins sujette aux erreurs.

En savoir plus sur hg status

Pour lister tous les fichiers dans un repo mercurial do: hg status --all.

Les fichiers seront donnés un préfixe avant eux quand ils sont répertoriés:

M = modified 
    A = added 
    R = removed 
    C = clean 
    ! = missing (deleted by non-hg command, but still tracked) 
    ? = not tracked 
    I = ignored 

Si vous voulez la liste uniquement les fichiers dans un dossier, vous pouvez fournir un chemin:

  • hg st --all MyFolder - tous les fichiers dans MyFolder
  • hg sta -i MyFolder - juste ignoré les fichiers dans MyFolder.

Outre la -i pour « Ignoré » et -a pour « Ajouté », d'autres drapeaux sont disponibles à la liste uniquement les fichiers ayant un statut particulier.

Obtenir help

Lire the other very useful answer here pour une explication complète de la commande status. Il a bas voix parce que l'auteur a essayé de montrer que vous pouvez découvrir tous les ci-dessus en demandant Mercurial sur la commande status comme ceci:

hg help status 

Vous pouvez demander à Mercurial de vous parler de l'une des ses commandes de comme ça. Et si vous voulez une liste des commandes de Mercurial, tapez hg help.

Questions connexes