Использует создание dvcs тяжелее для использования непрерывной интеграции в корпоративных средах?

Модуль argparse предлагает способ сделать это, не выполняя свои собственные проверки обязательности. В приведенном ниже примере используются «subparsers» или «sub команды». Я реализовал подпапку для «дампа» и один для «формата».

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('file', help='The file you want to act on.')
subparsers = parser.add_subparsers(dest='subcommand')

#  subparser for dump
parser_dump = subparsers.add_parser('dump')
# add a required argument
parser_dump.add_argument(
    'format',
    choices=['csv', 'json'],
    help='Dump the file in this format.')

#  subparser for upload
parser_upload = subparsers.add_parser('upload')
# add a required argument
parser_upload.add_argument(
    'server',
    choices=['amazon', 'imgur'],
    help='Upload the file to this service.')

args = parser.parse_args()
print args
if args.subcommand == 'dump':
    print 'I will now dump "%s" in the %s format' % (args.file, args.format)
if args.subcommand == 'upload':
    print 'I will now upload "%s" to %s' % (args.file, args.server)

Это выглядит так в командной строке:

$ python ap.py 
usage: ap.py [-h] file {upload,dump} ...
ap.py: error: too few arguments
$ python ap.py tmp.txt 
usage: ap.py [-h] file {upload,dump} ...
ap.py: error: too few arguments
$ python ap.py tmp.txt upload
usage: ap.py file upload [-h] {amazon,imgur}
ap.py file upload: error: too few arguments
$ python ap.py tmp.txt upload amazo
usage: ap.py file upload [-h] {amazon,imgur}
ap.py file upload: error: argument server: invalid choice: 'amazo' (choose from 'amazon', 'imgur')
$ python ap.py tmp.txt upload amazon
Namespace(file='tmp.txt', server='amazon', subcommand='upload')
I will now upload "tmp.txt" to amazon
$ python ap.py tmp.txt upload imgur
Namespace(file='tmp.txt', server='imgur', subcommand='upload')
I will now upload "tmp.txt" to imgur
$ python ap.py tmp.txt dump
usage: ap.py file dump [-h] {csv,json}
ap.py file dump: error: too few arguments
$ python ap.py tmp.txt dump csv
Namespace(file='tmp.txt', format='csv', subcommand='dump')
I will now dump "tmp.txt" in the csv format
$ python ap.py tmp.txt dump json
Namespace(file='tmp.txt', format='json', subcommand='dump')
I will now dump "tmp.txt" in the json format

Дополнительная информация: http://docs.python.org/dev/library/argparse.html#argparse. ArgumentParser.add_subparsers

5
задан JtR 28 May 2009 в 20:57
поделиться

2 ответа

Вы можете централизовать DVCS. Разница между DVCS и централизованными состоит в том, что с DVCS у вас нет , у вас для его централизации.

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

Вы когда-нибудь вносили большие изменения, которые ломают многие из вещи и хотели сделать несколько коммитов, но не делиться ими, пока не закончите и все снова не исправите? Это то, что упрощает DVCS.

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

Это действительно усложняет выполнение CI, так как система управления версиями поощряет вас НЕ выполнять непрерывную интеграцию. Однако нет ничего, что мешало бы вам выполнить эту регулярную интеграцию в центральный репозиторий. Команда просто должна оставаться дисциплинированной в этом отношении.

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

Это похоже на многоступенчатые стратегии непрерывной интеграции на основе потоков, которые продвигает Accurev:
http://www.accurev.com/multistage-continuous-integration.html

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

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