частота фиксации мерзавца

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

Меня не удовлетворила проблема, возникающая из-за простого использования переходов max-height и CSS3, поскольку, как отмечали многие комментаторы, вы должны установить значение max-height очень близко к фактической высоте, иначе вы получите задержку , См. JSFiddle для примера этой проблемы.

Чтобы обойти это (хотя по-прежнему не используется JavaScript), я добавил еще один элемент HTML, который переводит значение CSS transform: translateY.

Это означает, что используются max-height и translateY: max-height позволяет элементу отталкивать элементы под ним, а translateY дает «мгновенный» эффект, который мы хотим. Проблема с max-height все еще существует, но ее влияние уменьшено. Это означает, что вы можете установить гораздо большую высоту для своего значения max-height и меньше беспокоиться об этом.

Общее преимущество заключается в том, что при переходе обратно в (развал) пользователь сразу видит анимацию translateY, поэтому не имеет значения, сколько времени занимает max-height.

Решение в виде скрипки

body {
  font-family: sans-serif;
}

.toggle {
  position: relative;
  border: 2px solid #333;
  border-radius: 3px;
  margin: 5px;
  width: 200px;
}

.toggle-header {
  margin: 0;
  padding: 10px;
  background-color: #333;
  color: white;
  text-align: center;
  cursor: pointer;
}

.toggle-height {
  background-color: tomato;
  overflow: hidden;
  transition: max-height .6s ease;
  max-height: 0;
}

.toggle:hover .toggle-height {
  max-height: 1000px;
}

.toggle-transform {
  padding: 5px;
  color: white;
  transition: transform .4s ease;
  transform: translateY(-100%);
}

.toggle:hover .toggle-transform {
  transform: translateY(0);
}
Toggle!

Content!

Content!

Content!

Content!

Toggle!

Content!

Content!

Content!

Content!

53
задан Hamza Yerlikaya 24 June 2009 в 06:37
поделиться

8 ответов

Руководство для самого проекта Git (и проекта Linux, AFAIK) - одна фиксация на «логически отдельный набор изменений».

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

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

Весь код, измененный в каждой фиксации, должен быть связан, но он может (и, вероятно, должен) определенно находиться в нескольких файлах.

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

Весь код, измененный в каждой фиксации, должен быть связан, но он может (и, вероятно, должен) определенно находиться в нескольких файлах.

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

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

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

63
ответ дан 7 November 2019 в 08:30
поделиться

Я также отслеживаю некоторые другие проекты с помощью git, такие как emacs, wordpress и т. Д. Я вижу, что они не фиксируют это часто.

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

Я вижу, что они делают коммиты не так часто.

Одна из приятных особенностей git - то, что вы можете коммитить столько, сколько захотите, а затем, когда вы захотите сделать апстрим, вы можете объединить несколько связанных коммитов в один хорошая чистая фиксация с использованием git-rebase .

Я вижу, что они делают коммиты не так часто.

Одна из приятных особенностей git - то, что вы можете коммитить столько, сколько захотите, а затем, когда вы захотите сделать апстрим, вы можете объединить несколько связанных коммитов в один хорошая чистая фиксация с использованием git-rebase .

25
ответ дан 7 November 2019 в 08:30
поделиться

Чем больше вы фиксируете, тем проще находить ошибки с помощью git bisect

10
ответ дан 7 November 2019 в 08:30
поделиться

В конце концов, я завершаю фиксацию функции за функцией

Не забывайте, что вы могли бы « git add » выполнять функцию за функцией, делая только одну фиксацию:

  • после того, как все функции будут записаны либо исправлено для данной задачи
  • , либо как только вы поймете, что текущая функция слишком велика / сложна, чтобы быть частью фиксации в ближайшее время: вы можете зафиксировать то, что в настоящее время находится «на стадии» («git added»),который не будет включать ваши текущие изменения в рабочем каталоге.

Затем количество коммитов может быть связано с целью ветки:

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

Короче говоря, « публикации соображения» могут в D ] VCS (как в «Распределенный») поможет вам сделать правильное количество коммитов по правильным причинам.

13
ответ дан 7 November 2019 в 08:30
поделиться

Как только тесты пройдут, или когда функциональная единица добавлена ​​/ удалена / изменена.

6
ответ дан 7 November 2019 в 08:30
поделиться

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

1
ответ дан 7 November 2019 в 08:30
поделиться

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

3
ответ дан 7 November 2019 в 08:30
поделиться

Это действительно зависит от обстоятельств.

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

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

3
ответ дан 7 November 2019 в 08:30
поделиться
Другие вопросы по тегам:

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