Что такое список изменений в IntellJ IDEA? Список изменений по сравнению с чем? Для поиска

Что такое список изменений в IntellJ IDEA? Список изменений по сравнению с чем? Что значит, что у меня есть несколько списков изменений?

В частности, когда я вернусь к более ранней версии (используя VCS), IntelliJ хочет создать для нее новый список изменений. Зачем? В этом случае изменения будут связаны с чем? Скажем, я вернусь к версии 9 с версии 23. Затем список изменений будет содержать изменения между версией 23 и 9 или между 8 и 9?

Я попытался прочитать документацию, но это не дало мне никакого просветления.

Является ли списком изменений IntelliJ так же, как, например, понятие набора изменений в Mercurial, и в этом случае список изменений - это просто другое имя для node в графе истории изменений, концептуально?

Ответ 1

Список изменений - это набор файлов, которые вы изменили по сравнению с историей контроля версий. Он отличается от набора изменений управления версиями тем, что набор изменений управления версиями создается при фиксации кода. Список изменений IDEA присутствует во время редактирования кода, а затем очищается при фиксации кода.

Списки изменений IDEA позволяют отслеживать изменения, которые вы делаете. Вы можете быстро просмотреть все файлы, которые имеют изменения (по сравнению с последним обновлением/извлечением контроля версий). Они очень полезны тем, что у вас есть несколько наборов изменений, созданных за один раз (но только один активный), и они могут быть связаны с задачами (т.е. тикетами или баг-трекерами).

Допустим, я работаю над "новой функцией поиска". Я создаю список изменений для этого и делаю его активным. Когда я кодирую, все мои изменения попадают в этот список. Поскольку я работаю, я получаю аварийное исправление ошибки для зависания БД. Я создаю список изменений "DB Hang" и делаю его активным. Теперь все внесенные мной изменения/изменения вносятся в список изменений "DB Hangs". По завершении я могу зафиксировать только файлы в списке изменений "DB Hangs". Это предотвращает любые файлы, которые я изменил, работая над (пока не завершенной) задачей "Новая функция поиска". Как только исправление кода "DB Hangs" зафиксировано, я активизирую список изменений "новая функция поиска" и (наиболее вероятно) удаляю список изменений "DB Hangs" и продолжаю кодировать новую функцию поиска. Лично у меня также есть список изменений "Не фиксировать", куда я помещаю любые измененные файлы, которые не хочу фиксировать для контроля версий (например, изменения в файле конфигурации для изолированного/локального тестирования). Примечание. Вы можете легко перемещать измененные файлы из одного списка изменений в другой.

UPDATE

Начиная с версии 2018.1, IntelliJ IDEA позволяет файлу появляться в нескольких списках изменений. Из блога , в котором анонсируется новая функция: "Среда IDE теперь позволяет связывать куски кода, а не весь файл, со списком изменений и отслеживать их отдельно. Чанки кода можно быстро перемещать между списками изменений с помощью перейти к другому действию списка изменений, которое доступно из контекстного меню панели "Разница" в диалоговом окне "Фиксация изменений". " Смотрите этот блог для более подробной информации.

Для версий до 2018.1:

Если у вас есть несколько списков изменений - например, приведенный выше пример ошибки - если вы пытаетесь изменить файл в активном списке изменений, который также находится в неактивном списке изменений, IDEA предупреждает вас, и имя файла становится красным. Например, предположим, что в рамках моей первоначальной работы над "новой функцией поиска" я внес изменение в "User.java", которое зависит от количества новых файлов, которые я создал для работы с "новой функцией поиска". Затем я получаю аварийную ошибку, делаю и переключаюсь в список изменений "DB Hangs". Когда я исправляю эту ошибку, я понимаю, что мне нужно внести изменения в User.java. Когда я начинаю редактировать файл, IDEA предупреждает меня, что это часть другой ревизии. Это препятствует тому, чтобы я позже зафиксировал User.java без нового кода, от которого он зависит, и таким образом нарушил сборку. Когда я получаю это предупреждение, я должен принять решение о том, как с ним справиться. Я мог бы заполнить список изменений "новой функции поиска" перед редактированием User.java для исправления "зависания БД", а затем отменить его. (Обычно это лучше всего делать, когда в обоих исправлениях требуется много файлов.) В качестве альтернативы я мог бы переместить файл в список изменений "Db Hangs". Затем, если я решу, что изменения в порядке, чтобы внести исправление ошибки (т.е. не имеет других зависимостей), я могу просто зафиксировать их вместе. Или я могу откатить изменения в этом файле. (А потом использовать местную историю позже, чтобы вернуть их). Или я мог бы закомментировать изменения. Etc.

(КОНЕЦ ОБНОВЛЕНИЯ)

Чтобы ответить на этот вопрос:

Особенно, когда я возвращаюсь к более ранней версии (используя VCS), IntelliJ хочет создать для этого новый список изменений. Почему? В этом случае изменения будут связаны с чем? Допустим, я вернусь к версии 9 из версии 23. Тогда список изменений будет содержать изменения между версией 23 и 9 или между 8 и 9

При переключении на другую версию VCS IDEA захочет создать новый список изменений, только если вы внесли изменения в код версии, которая была ранее активной. Причина в том, что внесенные вами изменения кода - это "изменения в версии 23 этого файла". Когда вы вернетесь к версии 9, эти изменения больше не действительны сами по себе. Предполагается, что вы хотите отслеживать изменения, которые вы делаете в версии 9 отдельно. Я никогда не сталкивался с такой ситуацией (основываясь на моем личном рабочем процессе для работы со старыми версиями или ветвями). Но если вы хотите использовать изменения, сделанные вами при просмотре версии 23 с версией 9, вы сможете затем перейти к новому списку изменений или активировать исходный список изменений.