web-dev-qa-db-fra.com

Comment puis-je forcer Subversion à valider un fichier non modifié?

Je veux que Subversion valide un fichier même s’il n’a pas été modifié. Y a-t-il un moyen de faire cela?

55
pcorcoran

Si vous souhaitez que le contenu du fichier reste inchangé (ce qui signifie que vous ne pouvez pas simplement changer les espaces comme le suggère Johnstok), vous pouvez toujours modifier l'une des propriétés du fichier.

par exemple.

 svn propset dummyproperty 1 votre fichier 
 svn commet votre fichier 

Cela effectuera un commit sans avoir à changer le fichier.

Assurez-vous simplement que vous n'utilisez pas l'une des propriétés spéciales svn:. Tout le reste devrait être ok.


Edit: Plusieurs autres affiches ont demandé pourquoi quelqu'un voudrait le faire - vraisemblablement les personnes qui ont marqué cette réponse ont également exprimé les mêmes préoccupations.

Je ne peux pas parler pour l'affiche originale, mais je l'ai déjà utilisé lorsque l'on tente de synchroniser automatiquement des activités sur un référentiel Visual Sourcesafe avec un référentiel Subversion.

62
Andrew Edgecombe

Quant à savoir pourquoi on voudrait faire des commits forcés. J'ai vu des cas où quelqu'un a utilisé un message de commit incorrect ou incertain. C'est bien si vous pouvez effectuer un commit forcé, où vous pouvez corriger cette erreur. De cette façon, le message de validation mis à jour est envoyé dans le référentiel afin qu'il ne soit pas perdu.

4
user253217

J'ai gâché cela en supprimant puis en rajoutant le fichier incriminé. Ce n’était pas la meilleure façon de le faire, et cela a probablement brisé l’historique des révisions, mais cela me convenait.

Raison de vouloir le faire: Le fichier était l'un des deux exécutables construits à partir de la même source (avec un ensemble de #defines différent). Un changement mineur dans la source signifiait que l'un avait changé, l'autre non. Je voulais enregistrer dans l'historique des révisions que je l'avais mis à jour avec la dernière version (même s'il n'y avait pas de changement).

Peut-être que l'argument de Morten Holdflod Møller selon lequel "le fichier fera toujours partie de la nouvelle révision" couvrirait cette indication, mais je pense qu'un journal du fichier non modifié ne contenait pas de commentaires pour cette révision.

4
Mat

Il devrait être possible de répondre à certaines questions: pour une raison quelconque, svn ne reconnaît pas les différences entre les fichiers doc. Je voudrais donc aussi forcer la validation!

Je déplace maintenant la documentation des répertoires statiques vers svn. les fichiers ressemblent à UG_v1.2, UG_v1.3 etc . Donc, pour conserver l’historique, je prends la version 1.2, supprime la version du nom du fichier, puis l’ajoute et l’engage à svn . , copiez-le sur le premier et souhaitez le valider, ainsi que la version la plus récente. La taille du fichier et la date de création changent (sans mentionner le contenu de la doc), mais svn prétend qu'il s'agit parfaitement du même fichier et m'interdit de valider . Lorsque je modifie manuellement la doc, svn voit le différent . :>

2
agata

S'il s'agit d'un fichier texte, ajoutez simplement des espaces, tels qu'un saut de ligne.

2
johnstok

Je ne pense pas que ce soit possible, mais avant tout, pourquoi devez-vous faire cela? Si un fichier est inchangé, il ne devrait pas être validé.

Si vous voulez vraiment que ce fichier soit groupé avec d'autres fichiers dans un commit, vous pouvez changer quelque chose de mineur à l'intérieur (ajoutez un espace par exemple).

0
rslite

La raison pour laquelle quelqu'un veut valider un fichier inchangé est une incompréhension de la procédure à suivre pour revenir à une version précédente d'un fichier.

Par exemple, vous pouvez rétablir le fichier index.html dans la révision 680 en le mettant simplement à jour avec une révision antérieure, par exemple. 650 :

svn update index.html -r 650

mais cela ne résout pas le problème, car:

 svn status -u index.html 
 * 650 index.html 
 Statut par rapport à la révision: 680 

svn indique clairement que index.html est modifié à distance et vous ne pouvez pas le commettre, c’est-à-dire qu’il "pense" que index.html est ancien et doit être mis à jour avec une révision plus récente. Ainsi, le prochain svn update ramènera index.html à la révision 680 .

Pour vraiment restaurer un fichier, vous devez le fusionner dans l'ordre inverse:

svn merge -r 680:650 index.html

puis validez-le svn ci -m "Reverted to r650" index.html

0
Sergiy Sokolenko