J'ai créé une liste de modifications en faisant ...
$ svn changelist my_changes
... y a ajouté des fichiers, puis a validé la liste des modifications ...
$ svn ci --changelist my_changes --keep-changelists
... alors maintenant, j'ai "conservé" ma liste de modifications et elle apparaît à chaque fois que je visualise le statut.
$ svn status
... modified/added/deleted files listed here...
--- Changelist 'my_changes':
... files that are a part of this changelist listed here...
J'ai "gardé" la liste des modifications pour une raison, mais je n'en ai plus besoin donc je suis prêt à la supprimer. Comment supprimer cette liste de modifications de SVN? Je sais comment supprimer des fichiers de la liste des modifications, mais pas la liste des modifications elle-même.
Supprimez tous les fichiers associés d'une liste de modifications et il disparaîtra.
Voir https://stackoverflow.com/a/15992735/253468
svn changelist --remove --recursive --cl my_changes .
c'est-à-dire svn changelist --remove file.name
D:\Programming>mkdir test
D:\Programming>cd test
D:\Programming\test>svnadmin create .
D:\Programming\test>svn co file:///D:\Programming\test co
Checked out revision 0.
D:\Programming\test>cd co
D:\Programming\test\co>echo "hello" > test.file
D:\Programming\test\co>svn add test.file
A test.file
D:\Programming\test\co>svn status
A test.file
D:\Programming\test\co>svn changelist mycl test.file
A [mycl] test.file
D:\Programming\test\co>svn status
--- Changelist 'mycl':
A test.file
D:\Programming\test\co>svn changelist --remove test.file
D [mycl] test.file
D:\Programming\test\co>svn status
A test.file
# Remove all files from a specific CL
# Usage: svn_remove_cl my_changes
function svn_remove_cl() {
svn status |\
sed -n "/--- Changelist '$1':/,/--- Changelist.*/p" |\
grep -v '^--- Changelist' |\
awk '{print $2}' |\
xargs svn changelist --remove
}
Explication:
svn status
: Sortie de tous les fichiers modifiéssed
: recherchez la liste des modifications et prenez la sortie après le titre CL jusqu'à la prochaine CL ou la fin de la sortie de svn status
grep
: supprime les titres CL du tamponawk
: supprime les statuts des fichiers, ne conserve que les noms de fichiers (c'est-à-dire la deuxième colonne)xargs
: mettez chaque ligne en argument dans svn changelist
~/tmp/wc$ svn status
A d
--- Changelist 'cl_a':
A a
A e
A f
--- Changelist 'cl_x':
A b
A c
~/tmp/wc$ svn_remove_cl cl_x
Path 'b' is no longer a member of a changelist.
Path 'c' is no longer a member of a changelist.
~/tmp/wc$ svn status
A b
A c
A d
--- Changelist 'cl_a':
A a
A e
A f
Si vous souhaitez supprimer une seule liste de modifications (par exemple my_changes), déplacez-vous vers le dossier de niveau supérieur de votre copie de travail et exécutez:
svn changelist --remove --recursive --cl my_changes .
Pour ceux qui se demandent, vous pouvez le faire avec une seule commande avec svn. Accédez simplement au répertoire de niveau des fichiers sous votre liste de modifications et exécutez:
svn changelist --remove --recursive .
Cela fera une boucle sur tous les fichiers du répertoire actuel et tentera de les dissocier de la liste des modifications.