Lors de la mise à jour à distance d'un référentiel Mercurial, l'erreur suivante est générée par la commande hg update
qui est exécutée sur le serveur distant après l'envoi. J'ai regardé autour de moi en ligne pour de l'aide, mais je n'ai pas réussi à trouver quelque chose d'utile. À ce stade, j'espère avoir des idées et/ou un aperçu de ce qui causerait ce problème.Mise à jour Mercurial HG terminée avec l'état 255
L'erreur est juste au-dessous. Cela s'est produit en poussant deux changesets. Un changeset incluait un changement de fichier index.html sans rapport. L'autre changeset était une fusion, qui comprenait le changement index.html ainsi que le changement de nom des deux fichiers image.
[email protected]:/home/web/repository$ hg push pushing to ssh://10.10.1.12//home/web/repository searching for changes`remote: adding changesets remote: adding manifests remote: adding file changes remote: added 2 changesets with 1 changes to 1 files remote: abort: Operation not permitted: /home/web/repository/html/images/image.gif remote: warning: changegroup hook exited with status 255
Détails supplémentaires:
Les deux images sont 10385 octets. (oui, cette erreur se produit sur deux images que j'ai)
Les deux images avaient leurs noms changés dans les changesets qui étaient déjà poussés et
hg update
d en raison des collisions de pliage de cas en essayant de tirer les dépôts vers les PC Windows.Le serveur cible a le crochet suivant dans/etc/mercurial/hgrc:
[hooks] changegroup = hg update
En tant que travail autour, je ne les éléments suivants:
- supprimé image.gif.
- Suppression d'un autre fichier image ayant généré l'erreur.
- Ran
hg update
- succès! - Ran
hg revert html/image/image.gif
- Ran
hg revert html/image/otherimage.gif
A ce moment, je suis en train de mieux comprendre la cause de ce problème, afin que je puisse assurer un solide, la mise en œuvre facile à utiliser dans mon environnement. J'apprécie vraiment votre aide!!
Après avoir utilisé hg --debug update
dans le crochet, j'ai reçu cette sortie:
[email protected]:/home/web/repository$ hg push pushing to /home/web/staging/repository searching for changes adding changesets adding manifests adding file changes added 2 changesets with 1 changes to 1 files resolving manifests overwrite False partial False ancestor 58a5edb95c9a local 58a5edb95c9a+ remote 3aafb97b148c searching for copies back to rev 6 html/index.php: remote is newer -> g html/images/otherimage.gif.casefolding: update permissions -> e html/images/image.gif: update permissions -> e abort: Operation not permitted: /home/web/staging/repository/html/images/image.gif warning: changegroup hook exited with status 255
Permission Informations complémentaires:
Tous les 3 fichiers dans les 2 changesets ont 775 permission avec le webuser : dev utilisateur: groupe.
Mon fichier Global hgrc a le webuser confiance
[trusted] users = webuser
Peut-être y avait-il un problème d'autorisations pour le fichier en question? – Amber
Basé sur la sortie de débogage, je suis d'accord. J'ai ajouté des détails concernant les autorisations sur le serveur. S'il vous plaît laissez-moi savoir vos pensées sur la façon de résoudre ce problème d'autorisation. – bitsoflogic
Ce commentaire montre un peu de confusion "Tous les 3 fichiers dans les 2 changesets ont 775 permissions avec le webuser: dev user: group". Les fichiers dans les changesets n'ont pas d'autorisation de fichier (excepté execute) ou d'utilisateurs ou de groupes - ces métadonnées ne sont pas suivies par mercurial donc elles ne sont pas des parties de fichiers dans les changesets. Les fichiers sur le disque, à la fois ceux de .hg et ceux du répertoire de travail, auront la propriété et les permissions basées uniquement sur qui a exécuté la commande mercurial qui les a écrits. Dans votre exemple c'est 'levinaris', pas webuser. –