2008-10-01 11 views
8

Je me sers de cette commande longue:Comment ajouter tous les fichiers non suivis dans svn? Quelque chose comme git ajoute -i?

svn st | awk '/\?/ {print $2}' | xargs svn add 

De même, pour svn fichiers rm je accidentellement EFFACÉS rm normale avec:

svn st | awk '/\!/ {print $2}' | xargs svn rm --force 

Je suppose que je peux écrire une fonction bash pour faire ces deux, mais je préférerais un add/rm interactif comme celui que Git a.

+0

Notez que vos one liners se cassent pour les fichiers non suivis avec des espaces dans leur nom – freespace

+4

Utilisez 'svn st | grep '^?' | sed 's/^ [?] */"/ '| sed' s/$ /"/'| xargs svn add' à la place qui ne souffre pas du problème d'espace – freespace

Répondre

6

J'utilise une généralisation de la ligne de commande que vous exécutez, appelée svnapply.sh. Je ne l'ai pas écrit, mais je ne me souviens pas où je l'ai trouvé. Si tout va bien, l'auteur original me pardonnera de reposter ici:

#!/bin/bash 
# 
# Applies arbitrary commands to any svn status. e.g. 
# 
# Delete all non-svn files (escape the ? from the shell): 
# svnapply \? rm 
# 
# List all conflicted files: 
# svnapply C ls -l 

APPLY=$1 
shift 

svn st | egrep "^\\${APPLY}[ ]+" | \ 
sed -e "s|^\\${APPLY}[ ]*||" | \ 
sed -e "s|\\\\|/|g" | \ 
xargs -i "[email protected]" '{}' 

par les commentaires, le script permet d'exécuter des commandes arbitraires contre tous les fichiers avec le même statut.

Mise à jour:

Il ne serait pas trop difficile d'écrire un script qui prend un chemin de fichier comme argument et invite l'utilisateur à ajouter/supprimer et fait alors la chose appropriée pour ce fichier. Enchaîner cela avec le script ci-dessus vous obtiendrait ce que vous voulez.

0

Utilisez une interface graphique qui peut afficher tous les fichiers non suivis, puis sélectionnez tout et ajoutez. Tout gui SVN décent devrait fournir cette fonctionnalité. Cela dit, attention, vous voulez vraiment tous ces fichiers.

0

TortoiseSVN a la possibilité d'afficher des fichiers non versionnés dans les boîtes de dialogue Commit et Show Changes. Vous pouvez faire un clic droit sur un fichier pour l'ajouter ou le marquer comme ignoré.

Si vous utilisez Visual Studio: La dernière version stable d'AnkhSVN a une commande similaire, mais dans la plupart des cas, elle affiche uniquement les fichiers que vous devez ajouter. (Le projet fournit une liste de fichiers à la version au fournisseur de SCC, d'autres fichiers sont ignorés automatiquement)

+2

Si vous êtes dans la boîte de dialogue de livraison de TortoiseSVN, vous pouvez être encore plus paresseux. TortoiseSVN ajoutera automatiquement tous les fichiers non versionnés que vous avez cochés dans la boîte de dialogue lors de la validation. –

7

il y a une ligne plus facile ...

svn add `svn status | grep ?` 

alors vous pouvez le configurer comme un alias dans ~ /.bashrc tels que

alias svn-addi='svn add `svn status | grep ?`' 
+2

cela ne fonctionne pas –

+2

J'ai fini par faire ceci: pour un 'svn status | grep? | nawk '{print $ 2}' '; do svn ajouter $ a; done –

0

Il y a un similar question qui contient une nice Ruby script qui vous donne la possibilité d'ajouter, ignorer ou ignorer les nouveaux fichiers. Je l'ai essayé et ça a marché pour moi. Aucune interface graphique nécessaire, seulement Ruby.

5

Cela ajoute tous les fichiers svn-trassez et -unversioned dans le répertoire courant, récursion à travers tous les sous-répertoires:

svn add --force ./* 

Works pour moi dans Mac OS 10.6+ et Ubuntu 10, avec svn 1.6+. Cela ne fournit aucun fichier par interactivité utilisateur; Je ne sais pas comment faire ça.

Cela ajoutera également des fichiers svn-ignorés, pour le meilleur ou pour le pire.

+0

Cela ajoutera également des fichiers ignorés, ce qui n'est probablement pas ce que la plupart des gens veulent. –

+0

@IanDunn merci, j'ai mis à jour la réponse en conséquence. –

Questions connexes