Обновление Mercurial HG завершено со статусом 255 - PullRequest
2 голосов
/ 03 ноября 2010

При удаленном обновлении Mercurial Repository я получаю следующую ошибку от команды hg update, которая запускается на удаленном сервере после отправки.Я искал в интернете какую-то помощь для этого, однако мне не удалось найти что-нибудь полезное.На данный момент, я надеюсь на некоторые идеи и / или понимание того, что может вызвать эту проблему.

Ошибка чуть ниже.Это произошло при нажатии двух наборов изменений.Один набор изменений включал несвязанное изменение файла index.html.Другим набором изменений было слияние, которое включало изменение index.html, а также переименование двух файлов изображений.

levinaris@server01:/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

Дополнительные сведения:

  • ОбаРазмер изображения - 10385 байт.(да, эта ошибка возникает на двух моих изображениях)

  • Их имена были изменены в наборах изменений, которые уже были переданы, и hg update d из-за столкновений со сгибанием регистра при попыткеперетащить репозитории на ПК с Windows.

  • Целевой сервер имеет следующий хук в / etc / mercurial / hgrc:

    [hooks]
    changegroup = hg update
  • В качестве обходного пути я сделал следующее:

    1. Удалено image.gif.
    2. Удален другой файл изображения, который выдал ошибку.
    3. Ран hg update - успех!
    4. Ран hg revert html/image/image.gif
    5. Ран hg revert html/image/otherimage.gif

На данный момент я пытаюсь лучше понятьпричина этой проблемы, чтобы я мог обеспечить надежную, простую в использовании реализацию в моей среде.Я действительно ценю вашу помощь !!


После использования hg --debug update в крючке я получил этот вывод:

levinaris@server01:/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

Дополнительная информация о разрешении:

  • Все 3 файла в 2 наборах изменений имеют разрешение 775 для веб-пользователя: dev user: group.

  • Мой глобальный hgrc-файл имеет доверенного веб-пользователя

    [trusted]
    users = webuser

1 Ответ

2 голосов
/ 03 ноября 2010

Возможно ли, что права доступа к файлу на сервере были такими, что человек, выполняющий толчок, не мог его перезаписать?

Если, например, два разных человека сделали это нажатие (итаким образом, обновление) второй человек не сможет перезаписать файлы, созданные с помощью обновления, инициируемого нажатием кнопки от первого лица.

Возможно, попробуйте изменить тест для этого (у вас их нетодинарные кавычки у вас на крючке, верно?):

[hooks]
changegroup = hg --debug update

Если это проблема с разрешениями, то обычное решение состоит в том, чтобы поместить всех, кто будет загружать и обновлять, в одну группу (я называю мою 'hg')и затем с помощью бита sticky group во всех каталогах репозитория, чтобы убедиться, что новые файлы имеют эту группу.

...