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.
Ceci liste tous les fichiers récursivement:
svn ls -R URL-OF-REPO
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.
Vous pouvez essayer mon utilitaire fast-svn-crawler , il est beaucoup plus rapide que "svn list --recursive".
$ svn-crawler https://myrespository.my.com/Myproject
Sans URL
svn list --recursive -r HEAD
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