Ветвление [закрытых] стратегий

Вы можете вызвать метод get() в AsyncTask (или перегруженный get(long, TimeUnit) ). Этот метод будет блокироваться до тех пор, пока AsyncTask не завершит свою работу, и в этот момент он вернет вам Result.

Было бы разумно выполнять другую работу между созданием / запуском вашего асинхронного задание и вызов метода get, в противном случае вы не используете задачу async очень эффективно.

73
задан ks1322 2 December 2014 в 13:45
поделиться

15 ответов

Вот метод, который я использовал в прошлом с хорошим успехом:

соединительная линия / - новейший. Следующая главная версия кода. Май или не может работать в любой момент времени.

/branches/1.0, 1.1, и т.д. Стабильные ответвления обслуживания кода. Используемый для исправления ошибок стабилизируйте новые выпуски. Если ответвление обслуживания, это должно скомпилировать (если применимо) и готово к QA/поставке в любой момент времени. Если ответвление стабилизации, это должно скомпилировать и является завершенной функцией. Никакие новые возможности не должны быть добавлены, никакой рефакторинг и никакие очистки кода. Можно добавить пред - префикс для указания на ответвления стабилизации по сравнению с ответвлениями обслуживания.

/branches/cool_feature. Используемый для очень экспериментальной или разрушительной работы, которая может или не может превратить его в соединительную линию (или ответвление обслуживания). Никакие гарантии о компиляции кода, работе или иначе поведении нормально. Должен продлиться минимальное время как возможное прежде, чем объединиться в ответвление магистрали.

/tags/1.0.1, 1.0.2, 1.1.3a, и т.д. Используемый для меток упакованного & поставленный выпуск. Никогда изменения. Сделайте столько тегов, сколько Вы хотите, но они неизменны.

54
ответ дан jcoby 24 November 2019 в 12:20
поделиться

Для Подрывной деятельности я соглашаюсь с комментарием Ryan Duffield. Глава, к которой он обращается, предоставляет пользе исследования который система использовать.

причина, которую я спросил, состоит в том, который По необходимости обеспечивает совершенно другой способ создать ответвления из SVN или CVS. Плюс, существуют все DVCSs, которые дают свою собственную философию на ветвлении. Вашу переходящую стратегию продиктовали бы, которым инструментом (инструментами) Вы используете.

к вашему сведению, Svnmerge.py является инструментом для помощи со слиянием ответвлений в SVN. Это работает очень хорошо, пока Вы часто используете его (каждый 10-30) фиксации, иначе инструмент может запутаться.

0
ответ дан Misha M 24 November 2019 в 12:20
поделиться

Это зависело бы, на которой Системе управления версиями Вы используете. Каждый VCS имеет разные подходы к ветвлению.

, Какой VSC Вы используете?

0
ответ дан Misha M 24 November 2019 в 12:20
поделиться

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

, Если у Вас есть функция для добавления, перейти. Конструктивное изменение, ответвление. Были так много раз, где я думал, "о, я могу просто сделать это в соединительной линии, она не собирается занимать у этого много времени", и затем 5 часов спустя, когда я не могу выяснить ошибку, которая повреждает вещи, мне действительно было жаль, что я не перешел.

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

1
ответ дан mk. 24 November 2019 в 12:20
поделиться

Jeff Atwood записал об этом в хорошем сообщении в блоге; то сообщение имеет некоторые важные ссылки в нем.

2
ответ дан spinodal 24 November 2019 в 12:20
поделиться

У нас в настоящее время есть одно ответвление для текущего технического обслуживания, одно ответвление для "новых инициатив", которое просто означает "материал, который выйдет когда-то в будущем; мы не уверены когда". У нас также иногда было два продолжения ответвлений обслуживания: один для обеспечения фиксирует для того, что в настоящее время работает и тот, который находится все еще в QA.

основным преимуществом, которое мы видели, является способность реагировать на пользовательские запросы и чрезвычайные ситуации более быстро. Мы можем сделать закрепление на ответвлении, которое работает, и выпустите его, не выпуская ничего дополнительного, в котором, возможно, уже зарегистрировались.

основной недостаток - то, что мы заканчиваем тем, что делали большое слияние между ответвлениями, которое увеличивает шанс, что что-то будет пропущено или объединилось неправильно. До сих пор это не было проблемой, но это - определенно что-то для учета.

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

2
ответ дан Corey McKinnon 24 November 2019 в 12:20
поделиться

У Henrik Kniberg Управление версиями для Нескольких Гибких Команд также есть некоторые положительные стороны для учета.

3
ответ дан Asgeir S. Nilsen 24 November 2019 в 12:20
поделиться

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

я видел ниже этого, Вы используете Подрывную деятельность, таким образом, я думаю, что, вероятно, необходимо проверить раздел по ветвлению в Книга Подрывной деятельности. А именно, посмотрите на "раздел" расположения репозитория в Обслуживание Ответвления и Общие Шаблоны Ответвления .

3
ответ дан Ben Collins 24 November 2019 в 12:20
поделиться

Мы переходим, когда выпуск готов к заключительному QA. Если какие-либо проблемы обнаружены во время процесса QA, ошибки исправлены в ответвлении, проверили и затем объединились с соединительной линией. Как только ответвление передает QA, мы отмечаем его как выпуск. Любые текущие исправления для того выпуска также сделаны к ответвлению, проверили, объединенный с соединительной линией и затем отметили как отдельный выпуск.

структура папок была бы похожа на это (1 строка QA, 2 выпуска текущих исправлений и соединительная линия):

ответвления /

/REL-1.0

теги /

/REL-1.0

/REL-1.0.1

/REL-1.0.2

соединительная линия /

3
ответ дан 24 November 2019 в 12:20
поделиться

Наш репозиторий похож:

/trunk
/branches
/sandbox
/vendor
/ccnet

соединительная линия / является Вашей стандартной, новейшей разработкой. Мы используем CI, таким образом, это должно всегда создавать и проходить тесты.

ответвления / это - то, куда мы помещаем 'санкционированные' большие изменения, т.е. что-то, что мы ЗНАЕМ, превратит его в соединительную линию, но, возможно, нуждается в некоторой работе и повредил бы CI. Также, где мы работаем над корректировочными версиями, которые имеют их собственные проекты CI.

песочница / у каждого разработчика есть их собственная песочница плюс общая песочница. Это для вещей как, "Позволяет, добавляет поставщик LINQ к нашему продукту" тип задач, которые Вы делаете, когда Вы не делаете своей реальной работы. Это может в конечном счете войти в соединительную линию, это не может, но это там и при управлении версиями. Никакой CI здесь.

/ поставщик стандартное ответвление поставщика для проектов, где мы компилируем, но это не код, который мы поддерживаем.

/ccnet это - наши теги CI, только сервер CI может записать в здесь. Непредусмотрительность сказала бы нам переименовывать это к чему-то более универсальному, такому как CI, СБОРКИ, и т.д.

7
ответ дан Andrew Burns 24 November 2019 в 12:20
поделиться

Поскольку основной источник на переходящих шаблонах видит Brad Appleton Переданные потоком Строки: Переходящие Шаблоны для Параллельной Разработки программного обеспечения . Это - напряженный режим, но я не видел ничего для превышения его с точки зрения ширины и глубины знания о ветвлении.

15
ответ дан joe 24 November 2019 в 12:20
поделиться

Я высоко поощрил бы читать мнение Eric Sink о вопросе:

Глава 7: Ответвления

я, как Eric, предпочитаю стиль "папки", переходящий это, он говорит о.

20
ответ дан Ryan Duffield 24 November 2019 в 12:20
поделиться

Альтернатива, которую я не вижу здесь, является "Ответвлением по Изменению" философия.

Вместо того, чтобы иметь Вашу соединительную линию "Дикий Запад", что, если соединительная линия является "Текущим Выпуском"? Это работает хорошо, когда существует только одна версия приложения, выпущенного за один раз - такого как веб-сайт. Когда новая возможность или исправление ошибки необходимы, ответвление сделано содержать то изменение. Часто это позволяет мерам быть перемещенными для выпуска индивидуально и предотвращает кодеры ковбоя от случайного добавления опции для выпуска этого, Вы не предназначали. (Часто это - бэкдор - "Только для разработки/тестирования")

, указатели от Ben Collins довольно полезны в определении, какой стиль работал бы хорошо на Вашу ситуацию.

3
ответ дан 24 November 2019 в 12:20
поделиться
  1. Одна ветвь для активной разработки (/ main или master, в зависимости от жаргона)
  2. Одна ветвь для каждой версии обслуживания -> она будет получать только очень небольшие исправления, в то время как все основные разработки go / main
  3. Одна ветвь для каждой новой задачи: создайте новую ветвь для работы с каждой новой записью в Bugzilla / Jira / Rally. Часто фиксируйте изменения, самостоятельно документируйте изменения, используя дюймовые галочки, и возвращайте их в свою «родительскую» ветвь только после того, как они завершены и хорошо протестированы.

Посмотрите на эту http://codicesoftware.blogspot.com /2010/03/branching-strategies.html для лучшего объяснения

7
ответ дан 24 November 2019 в 12:20
поделиться

Независимо от того, какой шаблон ветвления выбран, вы должны стараться сохранить свои ветви в виде двоичного дерева следующим образом:

   trunk - tags
     |
    next
   /  \  \
bugfix  f1  f2
        /   \  \          
       f11    f21 f22
  • Дочерние узлы должны только слияние с прямым родителем.
  • Старайтесь объединить только целую ветвь с родительской. никогда не объединяйте вложенные папки в ветке.
  • Вы можете выбирать коммиты, когда это необходимо, при условии, что вы выполняете только слияние и выборку из всей ветки.
  • Следующая ветвь на приведенном выше рисунке предназначена только для иллюстрации, она может вам не понадобиться.
0
ответ дан 24 November 2019 в 12:20
поделиться
Другие вопросы по тегам:

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