web-dev-qa-db-fra.com

Comment lister tous les fichiers dans un référentiel SVN distant?

J'accède à un large référentiel SVN distant. Comme je n'ai généralement besoin que d'un petit sous-ensemble de son contenu, j'ai effectué une "vérification partielle":

svn checkout --depth empty svn+ssh://... src

Chaque fois que j'ai besoin d'un dossier du référentiel, je peux simplement le faire

svn up folder

et quand je n'en ai plus besoin, j'utilise

svn up --set-depth exclude folder

Mais maintenant, j'ai besoin d'une liste complète de tous les fichiers du référentiel et je ne souhaite pas effectuer de vérification complète uniquement pour obtenir les noms de fichier et de dossier.

J'ai déjà essayé svn ls -R qui listera en effet certains fichiers que je n'ai pas extraits, mais il en manque encore. Je sais parce que cela montre tout dans le répertoire actuel. Maintenant, je pourrais exécuter semi-manuellement svn ls et svn up --depth empty pour chaque nouveau répertoire trouvé, mais je me demande s’il existe une meilleure alternative.

Contrairement à Comment lister tous les fichiers déjà validés dans le référentiel? Je ne m'intéresse qu'au contenu actuel du référentiel et je n'ai pas accès à svnadmin. Je ne peux pas non plus installer de logiciel sur le serveur de référentiel.

28
Koma

Ceci liste tous les fichiers récursivement:

svn ls -R URL-OF-REPO
50
Lazy Badger
svn list --recursive https://myrespository.my.com/Myproject

Je pense que cela fonctionne pour le sous-répertoire courant et tous les sous-répertoires que j'ai essayés. Celui-ci répertorie également toutes les branches et balises, ainsi que tous leurs sous-répertoires et fichiers.

8
Gjordis

Vous pouvez essayer mon utilitaire fast-svn-crawler , il est beaucoup plus rapide que "svn list --recursive".

$ svn-crawler https://myrespository.my.com/Myproject
6
Dmitry Pavlenko

Sans URL

svn list --recursive -r HEAD

1
sanrodari

Si vous voulez obtenir une liste complète de tous les fichiers et non des dossiers, vous pouvez diriger/ svn list et grep commande comme ceci:

svn list -R svn://url/to/your/main/folder/on/repo | grep '[^\/]$'

le chemin d'accès aux dossiers répertoriés par 

svn list -R svn: // url/to/your/main/folder/on/repo

se termine toujours par "/" alors que le chemin du fichier ne le fait pas. La sortie est passée en entrée à 

grep '[^\/] $'

ce qui exclut tous les chemins ayant un dernier "/" ; les chemins restants sont uniquement liés aux fichiers.

Exemple: supposons que nous ayons un référentiel nommé myrepo on my.svnserver.com en tant que domaine et que nous souhaitons obtenir tous les fichiers répertoriés dans un sous-répertoire de myrepo ie mysubdir. : la commande est

svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$'

De même, si vous dirigez le résultat vers wc -l command (qui affiche le nombre de nouvelles lignes, chaque ligne de sortie contenant un seul chemin), vous pouvez obtenir le nombre de tous les fichiers sous mysubdir , comme ça

svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$' | wc -l
0
m3t4l