2011-12-27 5 views
13

J'ai effectué quelques fichiers dans svn, comme ceci:SVN: Comment ignorer un fichier modifié lors de la validation?

$svn st 
M a 
M b 
... 

Maintenant, je veux engager mes changements à svn, pour une raison quelconque, je ne veux pas commettre fichier b, est-il un moyen rapide ou commande d'ignorer le fichier modifié b?


Enfin, j'utilise @yzucker Solution 1, cp, revenir et valider. Les listes de changements sont trop lourdes, merci à tous.

Répondre

7

Hélas, le commit de nombreux fichiers avec quelques modifications gênantes a été ignoré.

Solution 1: copie, revenir et engager

$cp b /tmp/ 
$svn revert b 
$svn commit -m 'commit message' 
$mv /tmp/b ./ 

Solution 2: copie, engage, inverser l'effet de b, réengager b

$cp b /tmp/ 
$svn commit -m 'commit message' 
$svn merge -c -{new revision} b 
$svn commit b -m 'revert message for b' 
$cp /tmp/b ./b 

La seconde approche est moins préférable puisque vous présentez code cassé dans svn.

+1

Bonne idée, cela devrait être une caractéristique de Subversion elle-même. Il devrait y avoir un drapeau (appelez-le '-X') qui empêchera les fichiers d'être validés. – mliebelt

3

Je ne pense pas qu'il existe une option pour exclure un seul fichier, et inclure tous les autres qui ont été modifiés. Dans votre exemple, vous pouvez inclure uniquement les fichiers que vous souhaitez valider par

svn co a -m "Only commit a" 

qui exclura ensuite b. Voir le documentation of the command avec les exemples à la fin.

Une autre option pourrait être d'utiliser changelists, mais qui est plus lourd ...

+1

J'utilise des listes de modifications à cet effet (mais pas par la ligne de commande). –

+0

S'il existait des listes de modifications pour définir des fichiers à exclure explicitement, cela pourrait être une option. Mais souvent, vous avez beaucoup de fichiers modifiés (pas dans la liste des modifications), et vous ne voulez que 1 * pas * à commettre ... – mliebelt

2

Si le fichier b a déjà été ajouté au référentiel, il est impossible de l'ignorer plus. Vous devez supprimer ce fichier, commit, recréer et définir la propriété ignorer comme ceci:

svn propset svn:ignore b . 

Le point final signifie dossier en cours.

Si vous voulez ignorer les fichiers uniquement dans ce commit, tapez leur nom engagent explicitement dans la commande

svn co a c d 

a, c, d sont les fichiers que vous souhaitez engager.

+0

La dernière commande devrait-elle être 'svn ci a c d'? C'est une solution, merci. – fannheyward

15

Vous pouvez utiliser la fonction Changelist de nouveaux clients Subverion comme le montre cette courte session d'exemple:

$ svn st 
M  a 
M  b 

$ svn cl task1 a 
$ svn cl task2 b 

$ svn st 
--- Changelist 'task1': 
M  a 
--- Changelist 'task2': 
M  b 

$ svn ci --cl task1 -m "checking in only task 1 stuff" 
Sending  a 
Committed revision 11. 
+0

Qu'est-ce que la version svn? –

2

Sur Windows, vous pouvez utiliser l'interface graphique client TortoiseSVN et choisissez simplement les cases à cocher uniquement nécessaires.

Questions connexes