Подвижный вопрос о рабочем процессе (как обработать Файлы конфигурации),

Для записи ленивой функции просто используйте yield :

def read_in_chunks(file_object, chunk_size=1024):
    """Lazy function (generator) to read a file piece by piece.
    Default chunk size: 1k."""
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data


f = open('really_big_file.dat')
for piece in read_in_chunks(f):
    process_data(piece)

Другая опция состояла бы в том, чтобы использовать iter и функция помощника:

f = open('really_big_file.dat')
def read1k():
    return f.read(1024)

for piece in iter(read1k, ''):
    process_data(piece)

, Если файл основан на строке, объект файла уже является ленивым генератором строк:

for line in open('really_big_file.dat'):
    process_data(line)

7
задан Valentin Vasilyev 4 September 2009 в 12:34
поделиться

5 ответов

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

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

Есть другой способ, при котором вы многократно объединяете свои настройки, но затем, нажимая, вы должны помнить, что не следует нажимать ветвь слияния ( tX - основная линия, c1 - настройка)

t1-t2-t3-t4-...-tN
  \    \      \   \
   c1---c2-----c3--c4

Разработчику нужны и отправляют изменения, у которых только tX в качестве родителей, cX никогда не должен выходить из репо .

6
ответ дан 6 December 2019 в 14:06
поделиться

Я не знаю подробностей ваших файлов конфигурации, но если вы можете включить другие файлы, создайте файл config_local для хранения специфичных для разработчика настроек. Добавьте этот файл в .hgignore . Общие настройки входят в основной файл конфигурации, который затем включает файл config_local .

Как говорит Кен, если включение не является вариантом, тогда предварительная обработка на этапе сборки может быть подходящим вариантом.

4
ответ дан 6 December 2019 в 14:06
поделиться

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

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

Предполагая, что все остальные разработчики не отменили эти конкретные изменения в своих очередях, они получат их в следующий раз, когда вытащат + update.

3
ответ дан 6 December 2019 в 14:06
поделиться

Способ обработки без DVCS состоит в том, чтобы настроить процесс сборки для чтения строк подключения из отдельного файла конфигурации, а затем предварительно обработать их во время процесса сборки (в java вы можете использовать ant или maven для фильтрации из файла свойств, я не знаю о MS-land) .

1
ответ дан 6 December 2019 в 14:06
поделиться

Это немного подделка, но вы можете использовать KeywordExtension для автоматического расширения токенов. В вашем конфигурационном файле поместите что-то вроде этого:

db.host = $DBHOST$
db.host = $DBUSER$
db.host = $DBPASS$

, а затем в своих файлах ~ / .hgrc у пользователя будет что-то вроде этого:

[extensions]
hgext.keyword=
[keyword]
# expand keywords in all python files in working dir
**.conf =
[keywordmaps]
DBHOST = dev.server.internal
DBUSER = myname
DBPASS = mypass

Производство, конечно, будет иметь свой собственный .hgrc.

Схема будет стоить каждый немного настраивает время один раз, но после этого оно должно быть автоматическим. Значения по умолчанию могут быть в системном файле / etc / mercurial / hgrc на тот случай, если пользователь не хочет устанавливать свои собственные частные строки подключения.

0
ответ дан 6 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: