Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Организация репозитория
Когда я впервые начал использовать системы контроля версий , такие как CVS и SVN, я действительно не понимал концепции "trunk", ветвления, слияния и маркировки. Теперь я начинаю понимать эти концепции, и действительно понимаю важность и силу, стоящие за ними.
Итак, я начинаю делать это правильно. Или мне так кажется... Это то, что я понимаю до сих пор: последняя версия/стабильная версия вашего кода должна сидеть в /trunk/, в то время как бета-версии или версии bleeding edge находятся внутри каталога /branches/ как разные каталоги для каждого бета-релиза, а затем объединяются в магистраль при выпуске.
Не слишком ли упрощенный взгляд на вещи? Какие макеты репозитория вы, ребята, рекомендуете? Если это имеет значение, я использую Subversion.
То, что я делаю и обычно вижу как стандарт, - это:
Ствол должен содержать вашу основную линию развития, вашу нестабильную версию. Вы должны создать ветви релизов для своих релизов.
Что-то вроде:
/trunk (здесь вы разрабатываете версию 2.0) /branches/RB-1.0 (это ветвь выпуска для 1.0) /branches/RB-1.5
Когда вы находите ошибку в 1.5, вы исправляете ее в ветке RB, а затем объединяетесь с магистралью.
Я также рекомендую эту книгу .
У Эрика есть отличная серия статей по использованию системы управления версиями и передовым методам организации. Глава 7 посвящена филиалам (и да, она рекомендует каталоги /trunk/ и /branches/, которые вы предлагаете).
Я использовал Perforce в течение длительного времени, и поэтому мои комментарии могут быть немного ориентированы на Perforce, но основные принципы применимы к любому программному обеспечению SCM, которое имеет половину приличного ветвления. Я очень сильно верю в использование разветвленных методов разработки. У меня есть "main" (он же "mainline"), который представляет кодовую базу отныне и до вечности. Цель состоит в том, что это, в большинстве случаев, стабильно, и, если толчок пришел к толчку, вы можете сократить выпуск в любое время, что будет отражать текущую функциональность системы. Эти надоедливые продавцы продолжают спрашивать....
События происходят в ветвях, которые ветвятся от MAIN (обычно-иногда вы можете захотеть ветвиться от существующей ветви dev). Интегрируйтесь с MAIN в свои ветви разработки так часто, как вы можете, чтобы остановить слишком большие расхождения - или вы можете просто запланировать больший период интеграции позже. Только интегрируйте свою задницу, пиная новую функцию в MAIN, когда вы уверены, что она выйдет в предстоящем выпуске.
Наконец, у вас есть строка RELEASE, которая является опцией разных ветвей для разных выпусков. Существует несколько вариантов в зависимости от возможностей маркировки вашего программного обеспечения SCM и того, насколько разными могут быть основные/незначительные изменения. Таким образом, вы можете выбрать, например, ветвь выпуска для каждого выпуска точки или только для основного номера rev. Ваш пробег может отличаться.
Как правило, ветвь от MAIN выпускать как можно позже. Исправления ошибок и изменения в последнюю минуту могут либо перейти прямо в RELEASE для последующей интеграции в MAIN, либо в MAIN для немедленного резервного копирования интеграции. Там нет жесткого и быстрого правила-делать то, что работает лучше всего. Если, однако, у вас есть изменения, которые могут быть отправлены в MAIN (например, из ветки dev или "little tweaks" кем-то на MAIN), то сделайте первое. Это зависит от того, как работает ваша команда, каковы ваши циклы выпуска и т. д.
E.g. У меня было бы что-то вроде этого:
//MYPROJECT/MAIN/... - the top level folder for a complete build of all the product in main.
//MYPROJECT/DEV/ArseKickingFeature/... - a branch from MAIN where developers work.
//MYPROJECT/RELEASE/1.0/...
//MYPROJECT/RELEASE/2.0/...
Нетривиальный проект, вероятно, будет иметь несколько активных ветвей DEV одновременно. Когда разработка была интегрирована в MAIN, так что теперь она является частью основного проекта, убейте старую ветку DEV, как только сможете. Многие инженеры будут рассматривать ветку DEV как свое личное пространство и использовать ее для различных функций с течением времени. Препятствовать этому.
Если после выпуска вам нужно исправить ошибку, сделайте это в соответствующей ветке выпуска. Если ошибка была ранее исправлена в MAIN, то интегрируйте через, Если код не изменился так сильно в MAIN исправление отличается.
Что действительно отличает кодовые линии, так это политики, которые вы используете для управления ими. Например, какие тесты запускаются, кто проверяет до / после изменения, какое действие происходит, если сборка ломается. Обычно политики - и, следовательно, накладные расходы-являются самыми сильными в ветвях выпуска и самыми слабыми в DEV. Здесь есть статья, которая проходит через некоторые сценарии и ссылки на другие полезные вещи.
Наконец, я рекомендую начать с простой структуры и вводить только дополнительные версии dev & по мере необходимости.
Надеюсь, что это помогает, а не stating-the-bleedin' - очевидно слишком много.