Subversion n'a pas de fonctionnalité intégrée " ne pas livrer " / " ignorer lors de la livraison ", à partir de février 2016 / version 1.9. Cette réponse est une solution de contournement non idéale en ligne de commande.
Comme l'indique l'OP, TortoiseSVN a une liste de changements intégrée, "ignore-on-commit", qui est automatiquement exclue des commits. Le client en ligne de commande ne dispose pas de cette fonctionnalité. Vous devez donc utiliser plusieurs listes de modifications pour obtenir le même résultat (avec des restrictions). :
- un pour le travail que vous voulez commettre [travail].
- un pour les choses que vous voulez ignorer [ignore-on-commit].
Comme il y a un précédent avec TortoiseSVN, j'utilise "ignore-on-commit" dans mes exemples pour les fichiers que je ne veux pas livrer. J'utiliserai "work" pour les fichiers que je veux livrer, mais vous pouvez choisir le nom que vous voulez.
Tout d'abord, ajoutez tous les fichiers à une liste de modifications nommée "travail". Ceci doit être exécuté à partir de la racine de votre copie de travail :
svn cl work . -R
Cela ajoutera tous les fichiers de la copie de travail récursivement à la liste de modifications nommée "travail". Il y a un inconvénient à cela - lorsque de nouveaux fichiers sont ajoutés à la copie de travail, vous devrez ajouter spécifiquement les nouveaux fichiers ou ils ne seront pas inclus. Deuxièmement, si vous devez relancer cette opération, vous devrez à nouveau ajouter tous vos fichiers "ignore-on-commit". Ce n'est pas idéal - vous pourriez commencer à maintenir votre propre liste d'ignorés dans un fichier comme d'autres l'ont fait.
Ensuite, pour les fichiers que vous voulez exclure :
svn cl ignore-on-commit path\to\file-to-ignore
Comme les fichiers ne peuvent figurer que dans une seule liste de modifications, l'exécution de cet ajout après votre précédent ajout "travail" supprimera le fichier que vous voulez ignorer de la liste de modifications "travail" et le placera dans la liste de modifications "ignorer sur commande".
Lorsque vous êtes prêt à livrer les fichiers modifiés que vous souhaitez livrer, il vous suffit d'ajouter "--cl work" à votre livraison :
svn commit --cl work -m "message"
Voici à quoi ressemble un exemple simple sur ma machine :
D:\workspace\trunk>svn cl work . -R
Skipped '.'
Skipped 'src'
Skipped 'src\conf'
A [work] src\conf\db.properties
Skipped 'src\java'
Skipped 'src\java\com'
Skipped 'src\java\com\corp'
Skipped 'src\java\com\corp\sample'
A [work] src\java\com\corp\sample\Main.java
Skipped 'src\java\com\corp\sample\controller'
A [work] src\java\com\corp\sample\controller\Controller.java
Skipped 'src\java\com\corp\sample\model'
A [work] src\java\com\corp\sample\model\Model.java
Skipped 'src\java\com\corp\sample\view'
A [work] src\java\com\corp\sample\view\View.java
Skipped 'src\resource'
A [work] src\resource\icon.ico
Skipped 'src\test'
D:\workspace\trunk>svn cl ignore-on-commit src\conf\db.properties
D [work] src\conf\db.properties
A [ignore-on-commit] src\conf\db.properties
D:\workspace\trunk>svn status
--- Changelist 'work':
src\java\com\corp\sample\Main.java
src\java\com\corp\sample\controller\Controller.java
src\java\com\corp\sample\model\Model.java
M src\java\com\corp\sample\view\View.java
src\resource\icon.ico
--- Changelist 'ignore-on-commit':
M src\conf\db.properties
D:\workspace\trunk>svn commit --cl work -m "fixed refresh issue"
Sending src\java\com\corp\sample\view\View.java
Transmitting file data .done
Committing transaction...
Committed revision 9.
Une alternative serait de simplement ajouter chaque fichier que vous souhaitez livrer à une liste de modifications "travail", et de ne même pas maintenir une liste d'ignorés, mais c'est aussi beaucoup de travail. Vraiment, la seule solution simple et idéale est si/quand cela sera implémenté dans le SVN lui-même. Il y a un problème de longue date à ce sujet dans le gestionnaire de problèmes de Subversion, SVN-2858 au cas où cela changerait à l'avenir.
1 votes
Il existe un moyen d'utiliser la branche personnelle et le statut de commutation. [Voir mon autre message sur ce sujet] [1] [1] : stackoverflow.com/questions/862950/