L'erreur "can't clobber writable" file se produit parce que Perforce est très prudent quant à l'écrasement accidentel ("clobbering") du travail que vous avez fait dans votre espace de travail.
Le processus normal de Perforce consiste à p4 sync
un fichier (ce qui le place dans votre espace de travail en lecture seule) et ensuite pour p4 edit
si vous voulez le modifier (cela le rend accessible en écriture). Un fichier qui a été ouvert avec p4 edit
sera toujours ignoré par p4 sync
(sauf pour programmer en toute sécurité un resolve
si nécessaire), et sera inclus par une p4 submit
.
Si un fichier n'est pas ouvert, mais qu'il est accessible en écriture, cela signifie que quelque chose s'est mal passé dans ce flux de travail, par exemple que vous avez manuellement rendu le fichier accessible en écriture pour y apporter des modifications, et si sync
met à jour ce fichier, vos modifications seront perdues ! Ainsi, le comportement par défaut de sync
est de ne pas mettre à jour les fichiers inscriptibles.
Cette explication étant faite, voici quelques options :
-
p4 sync -f
forcera un fichier non ouvert à être mis à jour, qu'il soit ou non périmé, et qu'il soit ou non accessible en écriture. (Les fichiers ouverts sont toujours ignorés).
-
p4 edit
ouvrira le fichier. A partir de là, vos options sont p4 revert
(abandon de vos modifications) ou p4 submit
(en soumettant vos modifications).
-
Changer noclobber
à clobber
dans votre spécification client supprime les sauvegardes contre la destruction des fichiers inscriptibles.
-
Changer noallwrite
à allwrite
rend tous les fichiers accessibles en écriture par défaut, ce qui supprime implicitement l'attribut noclobber
sauvegarde. Dans les versions actuelles du serveur, il active également l'option "safe sync" ( p4 sync -s
) par défaut, forçant les calculs de digest sur tous les fichiers avant de les mettre à jour. C'est plus lent que de s'appuyer sur le bit d'écriture, mais beaucoup plus précis. Notez que si vous travaillez sur des fichiers sans les ouvrir, vous courez toujours le risque de ne pas les avoir inclus dans votre fichier submit
-- le p4 reconcile
La commande est votre amie ici.
2 votes
Vous pouvez également définir l'option clobber dans la définition de votre espace de travail. perforce.com/perforce/doc.current/manuals/cmdref/Content/CmdRef/
4 votes
Ceux qui préfèrent utiliser p4v peuvent définir l'option Clobber en allant dans Connexions > Editer l'espace de travail actuel > Avancé et en cochant la case Clobber.