DVCS - как часто и когда совершать изменения

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

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

div.holder{
  background-color:red;
  display:inline-block;
  height:100px;
  width:400px;
}
svg, img{
  background-color:blue;
  display:block;
  height:auto;
  width:auto;
  max-width:100%;
  max-height:100%;
}
.content_sizer{
  position:relative;
  display:inline-block;
  height:100%;
}
.content{
  position:absolute;
  top:0;
  bottom:0;
  left:0;
  right:0;
  background-color:rgba(155,255,0,0.5);
}
<div class="holder">
  <div class="content_sizer">
    <svg width=10000 height=5000 />
    <div class="content">
    </div>
  </div>
</div>

Обратите внимание, что я использовал большой значения в атрибутах ширины и высоты SVG, так как он должен быть больше максимального ожидаемого размера, поскольку он может только уменьшаться. Пример делает соотношение div 10: 5

30
задан Community 23 May 2017 в 12:23
поделиться

5 ответов

Это зависит от характера ветки («линии разработки»), над которой вы работаете.

Основное преимущество этих DVCS (git или mercurial) заключается в простоте, которую вы можете:

  • branch
  • merge

Итак:

1 / Как часто и когда вы делаете коммит?
2 / Вы фиксируете изменения только при правильной сборке?

Столько раз, сколько необходимо в частной ветке (например, если она компилируется).
Практика фиксации только в том случае, если модульные тесты пройдены, является хорошей, но должна применяться только к «официальной» (например, «может быть опубликована или« отправлена ​​») ветвь: в вашей частной ветке вы объединяете gazillon раз, если вы необходимо.
Единственное: сделайте некоторое слияние --interactive, чтобы реорганизовать множество ваших коммитов в вашей частной ветке, прежде чем воспроизводить их в своей основной ветке разработки, где вы можете пройти некоторые тесты.

3 / Как часто и когда вы нажимаете свои изменения (или отправить запрос на перенос или подобное)?

Публикация - это другое дело, и она должна выполняться с «чистой» историей (согласованные слияния, представляющие контент, который компилируется и проходит некоторые тесты).
Публикуемая ветка должна быть такой, в которой история никогда не переписывается, а всегда обновляется.
Скорость публикаций зависит от характера удаленной ветви и населения, тянущего эту ветку. Например, если это для другой команды, вы можете довольно часто пушить. Если это для команды общесистемного интеграционного тестирования, вы будете продвигать намного реже.

4 / Как вы подходите к разработке сложной функции / выполнению сложного рефакторинга, требующего работы во многих местах? Нормальны ли "частные коммиты", которые не соберутся? Когда закончите, отправляете ли вы их также в главный репозиторий или объединяете все свои изменения в единый набор изменений перед тем, как нажимать?

См. 1. и 2: сначала патч в вашей собственной частной ветке, затем реорганизуете свои коммиты на официальная (опубликованная) ветка патча. Одна единственная фиксация не всегда лучший вариант, если исправление включает в себя несколько различных «действий» (или исправление ошибок).

14
ответ дан 28 November 2019 в 00:25
поделиться

Как часто и когда вы совершаете коммит?

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

Вы фиксируете изменения только тогда, когда они построены правильно?

Да, почти всегда. Я не могу придумать причину, по которой нужно проверить код, который не был правильно построен. Существует множество причин, по которым вы можете проверить код, который не запускает правильно (в ветке).

Как часто и когда вы отправляете свои изменения (или отправляете запрос на перенос или подобное)?

Обычно только тогда, когда функция завершена и готова к интеграционному тестированию. Это означает, что он прошел модульные и другие соответствующие тесты, а код / ​​патч достаточно чист, и я считаю его готовым к рассмотрению.

Как вы подходите к разработке сложной функции / выполнению сложного рефакторинга, требующего затронуть множество мест? Нормальны ли "частные коммиты", которые не соберутся? Когда закончите, отправляете ли вы их также в главный репозиторий или объединяете все свои изменения в единый набор изменений перед тем, как нажимать?

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

1
ответ дан 28 November 2019 в 00:25
поделиться

Я много совершаю; при добавлении функций или даже при переформатировании исходных текстов.

Я использую git и большую часть работы выполняю в ветвях, не являющихся общими. И когда я добавил достаточно небольших изменений, которые считаются блоком, я использую git rebase , чтобы собрать более мелкие связанные изменения в более крупные фрагменты и зафиксировать их в основных ветвях.

Таким образом, у меня есть все преимущества фиксированного кода, в котором я могу двигаться вперед или назад, но мне не нужно фиксировать все свои ошибки и бактреки в основной истории.

4
ответ дан 28 November 2019 в 00:25
поделиться

Я следую такого рода потоку
альтернативному тексту http://img121.imageshack.us/img121/3272/versioncontrolsysbestpr.png[12171 impression([1133042 visible) URL исходного изображения )

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

0
ответ дан 28 November 2019 в 00:25
поделиться

Я очень, очень часто фиксирую изменения в моей DVCS (моей собственной теме или ветке задачи), таким образом я могу использовать ее не только для «внесения изменений», но и для помощи мне во время работы: например, «почему это работал 5 минут назад и больше не работает? " Если вы делаете коммит часто, вы можете просто запустить diff.

Кроме того, я нашел очень, очень хорошим приемом "самодокументирования рефакторов". Позвольте мне объяснить: если вам нужно провести большой рефакторинг в тематической ветке, а затем просмотреть изменение в целом (изменив хороший набор файлов), вы, вероятно, заблудитесь. Но предположим, что вы проверяете каждый «промежуточный шаг» и документируете его с комментарием, а затем вы создаете своего рода «фильм» своих собственных изменений, помогающих описать то, что вы сделали! Огромный для обозревателей.

5
ответ дан 28 November 2019 в 00:25
поделиться
Другие вопросы по тегам:

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