Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

svn: supprimer copie locale (uniquement)

6 réponses
Avatar
Francois Lafont
Bonjour à tous,

Imaginons que je modifie, de manière très ciblée, un petit dossier dans
un dépôt svn :

#-------------------------
svn checkout http://svn.dom/trunk/dossier/cible/ --username 'moi'
cd ./cible

svn remove bidul
svn commit

...

svn update
svn add machin truc
svn commit
#-------------------------

Comment faire pour ensuite supprimer la copie locale sans bien sûr
supprimer quoi que ce soit sur le dépôt distant. En résumé, comment se
"désolidariser" proprement du dépôt et virer sa copie locale.

Je pense que si je fais un simple "rm -R" du dossier contenant la copie
locale, ça devrait être bon, mais j'ai quand même des avertissements du
genre :

rm : supprimer fichier (protégé en écriture) « ./le/fichier » ?

Ça fait un peu peur. Y a-t-il un moyen de faire cela « proprement » ?
Merci d'avance.


--
François Lafont

6 réponses

Avatar
Marc Boyer
Le 09-09-2011, Francois Lafont a écrit :
#-------------------------
svn checkout http://svn.dom/trunk/dossier/cible/ --username 'moi'
cd ./cible

svn remove bidul
svn commit

...

svn update
svn add machin truc
svn commit
#-------------------------

Comment faire pour ensuite supprimer la copie locale sans bien sûr
supprimer quoi que ce soit sur le dépôt distant. En résumé, comment se
"désolidariser" proprement du dépôt et virer sa copie locale.

Je pense que si je fais un simple "rm -R" du dossier contenant la copie
locale, ça devrait être bon,



Ben, oui.

mais j'ai quand même des avertissements du genre :

rm : supprimer fichier (protégé en écriture) « ./le/fichier » ?



Bizarre. En tout cas, sans incidence avec le dépot svn lui même.

Marc Boyer
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
Avatar
Francois Lafont
Le 09/09/2011 13:17, Marc Boyer a écrit :

Je pense que si je fais un simple "rm -R" du dossier contenant la copie
locale, ça devrait être bon,



Ben, oui.



Bon, si c'est comme ça que tu fais aussi, alors me voilà rassuré. :-)

mais j'ai quand même des avertissements du genre :

rm : supprimer fichier (protégé en écriture) « ./le/fichier » ?



Bizarre. En tout cas, sans incidence avec le dépot svn lui même.



Ok, je me doutais bien qu'un bon vieux "rm -R" sans faire usage de « svn
commande » n'aurait aucune incidence sur le dépôt lui-même mais je ne
comprends pas les messages que j'ai.

Ce matin, j'avais annulé la commande "rm -R" en faisant un CTRL+C au
moment où on me demandait la confirmation de la suppression. Entre
temps, je redémarré la machine, et le "rm -R" me retourne toujours la
même question "rm : supprimer fichier (protégé en écriture) «
./le/fichier » ?".

Ça m'intéresserait d'avoir une explication.


--
François Lafont
Avatar
Benoit Izac
Bonjour,

le 09/09/2011 à 20:51, Francois Lafont a écrit dans le message
<4e6a5fd1$0$13020$ :

Ce matin, j'avais annulé la commande "rm -R" en faisant un CTRL+C au
moment où on me demandait la confirmation de la suppression. Entre
temps, je redémarré la machine, et le "rm -R" me retourne toujours la
même question "rm : supprimer fichier (protégé en écriture) «
./le/fichier » ?".

Ça m'intéresserait d'avoir une explication.



Tu as un fichier dans l'arborescence pour lequel tu n'as pas les droits
en écriture :
% touch un_fichier && chmod a-w un_fichier
% LC_ALL=fr_FR.UTF-8 rm un_fichier
rm : supprimer fichier (protégé en écriture) « un_fichier » ?

Soit tu réponds oui à chaque fois, soit tu utilises rm avec l'option
« -f ».

--
Benoit Izac
Avatar
Benoit Izac
Bonjour,

le 10/09/2011 à 00:00, Francois Lafont a écrit dans le message
<4e6a8c04$0$13375$ :

Tu as un fichier dans l'arborescence pour lequel tu n'as pas les droits
en écriture :



Même pas. Je vais t'épargner la sortie de « ls -Rl 2011-2012/ » qui fait
78 fichiers-dossiers, mais je peux t'assurer que le compte "francois"
que j'utilise a le droit w sur tous.

Si tu en doutes, je te fais un copier-coller de la sortie de n'importe
quelle commande (bien ficelées dont tu as le secret) qui le prouve. :-)



Le seul fichier intéressant est celui pour lequel tu as une demande de
confirmation :
% ls -ld le_fichier_qui_bloque
et si ta partition est de type ext2, ext3 ou ext4 :
% lsattr le_fichier_qui_bloque

--
Benoit Izac
Avatar
Benoit Izac
Bonjour,

le 10/09/2011 à 01:15, Francois Lafont a écrit dans le message
<4e6a9dc4$0$3897$ :

Bon, j'aurais dû me taire. Tu avais raison. En fait, le fichier est
dans un dossier "caché" (.svn) et du coup je ne le voyais pas avec mes
ls (j'aurais dû mettre l'option -a).

$ ls -ld 2011-2012/.svn/prop-base/PAF_etab.pdf.svn-base
-r--r--r-- 1 francois francois 53 9 sept. 09:08
2011-2012/.svn/prop-base/PAF_etab.pdf.svn-base

$ lsattr 2011-2012/.svn/prop-base/PAF_etab.pdf.svn-base
-----------------e- 2011-2012/.svn/prop-base/PAF_etab.pdf.svn-base


Que signifie le résultat de la 2e commande ?



Ça affiche les attributs spécifiques aux systèmes de fichier ext[234],
voir chattr(1) pour leurs significations. Si tu avais l'attribut « i »
(immutable), tu aurais eu la même demande de confirmation mais tu
n'aurais pas pu l'effacer. À noter que seul root peut mettre cet
attribut sur un fichier.

Pourquoi n'ai-je pas le droit w sur ce fichier ?



Je ne connais pas trop subversion, mais je pense que c'est pour éviter
que tu n'ailles modifier les informations qui lui sont propres.

--
Benoit Izac
Avatar
Benoit Izac
Bonjour,

le 10/09/2011 à 15:38, Francois Lafont a écrit dans le message
<4e6b67dd$0$2498$ :

Bon, on est bien d'accord qu'un « rm -Rf ledossier/ » n'aura aucune
incidence sur le dépôt distant, hein ?



Oui. Pas plus que dir1 ne va être affecté ci-dessous :
% cp -pR dir1 dir2
% rm -fr dir2

svn checkout crée une _copie_ locale du dépôt. Pour modifier le dépôt,
il te faut forcément passer par svn (sauf si tu as un shell sur ce dépôt
bien sûr).

--
Benoit Izac