Сброс проблем / значение tmp для продвижения меркуриальных изменений - PullRequest
3 голосов
/ 24 апреля 2011

Я использую Mercurial уже около года, и у меня не было проблем.

Сегодня я впервые столкнулся с проблемой.

Когда я пытаюсь нажать на удаленном сервере с

$ hg push

, я получаю следующий ответ

searching for changes
remote: abort: No space left on device
abort: unexpected response: empty string

Я погуглил эту проблему и обнаружил, что она задокументирована, и нашел следующую выдержку из Mercurial FAQ :

4.28.Я получаю «Нет свободного места» или «Дисковая квота превышена» при загрузке

Я получаю «Нет свободного места» или «Дисковая квота превышена» при загрузке, но есть много места или / и у меня естьнет ограничения квоты на устройстве, где находится удаленный репозиторий hg.

Проблема, вероятно, связана с тем, что mercurial использует / tmp (или один из каталогов, определяемых переменными среды $ TMPDIR, $ TEMP или $ TMP)распаковать полученный пакет на провод.Распаковка может затем достигнуть пределов устройства.

Конечно, вы можете установить $ TMPDIR в другое место на удаленном компьютере в файле конфигурации оболочки по умолчанию, но он может быть потенциально использован другими процессами, кроме mercurial.Другое решение - установить глобальный .hgrc на удаленном устройстве.Смотрите описание того, как установить хук для изменения каталога tmp на пульте при нажатии.

Я создал хук в моем файле /etc/mercurial/hgrc, который выглядит следующим образом

[hooks]
pre-serve.tmpdir = python:hgenviron.settmpdir

, и затем я должен создать hgenviron.py

import os
#see http://docs.python.org/lib/module-tempfile.html
def settmpdir(ui, repo, hooktype, node=None, source=None, **kwargs):
        os.environ["TMPDIR"] = "/home/tmp"

У меня проблема в том, что я не знаю, как добавить этот файл в $PYTHONPATH в fedora

Моя операционная система Fedora 12 x86_64
У меня Python 2.6
У меня естьmercurial 1.6.4

ОБНОВЛЕНИЕ:

Я только что добавил hgenviron.py в /usr/lib/python2.6/site-packages/hg/hgenviron.py и

PYTHONPATH=$PYTHONPATH:/usr/lib/python2.6/site-packages/hg/hgenviron.py
export PYTHONPATH 

в .sh файлв /etc/profile.d вместе с крючком в /etc/mercurial/.

Однако я все еще получаю ошибку:

remote: abort: pre-serve.tmpdir hook is invalid (import of "hgenviron" failed) abort: 
no suitable response from remote hg!

Ответы [ 2 ]

2 голосов
/ 24 апреля 2011

Проблема в неправильном утверждении импорта.Оно должно быть from hg import hgenviron

Для настройки PYTHONPATH Зависит от того, как / где вы хотите добавить его.

В /etc/profile.d вы можете найти набор скриптов, которые запускаются при загрузке bash./etc/profile - это глобальный файл, который вызывает скрипты и имеет следующий комментарий:

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT good idea to change this file unless you know what you
# are doing. Much better way is to create custom.sh shell script in
# /etc/profile.d/ to make custom changes to environment. This will
# prevent need for merging in future updates.

/etc/profile запускается при загрузке среды bash.Локально для пользователя вы редактируете ~/.bash_profile или ~/.bashrc (если они не существуют, вы можете их создать).Эти сценарии запускаются, когда конкретный пользователь входит в систему. Вам следует подробно изучить эти файлы, чтобы понять, как создается и настраивается среда.

Вы бы добавили что-то вроде этого:

PYTHONPATH=/home/tmp:$PYTHONPATH
export PYTHONPATH
0 голосов
/ 24 июля 2015

Если вы пытаетесь добраться до сути проблемы PYTHONPATH, вы можете указать местоположение файла hgenviron.py.затем вызывается с : вместо . в исходном примере.

...