Кстати, баг. Когда дописываешь новые цифры на поле, перестают появляться девятки, из-за чего на поле остается туча невостребованных единиц. Может быть, это я такой везучий, но проверьте, пожалуйста. Игра очень затягивает, а этот баг прям палки в колеса ставит :(
Вы опять не поняли ситуацию…
Вы разрабатываете фичу. Делаете это в отдельной ветке. В этой фиче у вас уже сделано несколько коммитов, которых еще нет в главной ветке. И тут в главной ветке вы замечаете ошибку. Ошибка мешает вашей дальнейшей разработке. ее нужно поправить. Но править в вашей рабочей ветке нельзя, т.е. этот фикс не попадет в мастер-ветку до окончания разработки фичи, а значит не попадет и к остальным разработчикам и в релиз (если он состоится до завершения разработки фичи).
Я говорю с вами и натыкаюсь на стену непонимания. Вы, судя по всему, совершенно не понимаете принципов работы в ветках или принципов работы git`а…
>Если сервер лежит при этом (невозможно сделать checkout), то просто скопирую рабочую копию, откачу в ней все изменения, и внесу нужные исправления.
И как потом эти внесенные изменения потом перенести в вашу рабочую копию? Вы совершенно не поняли, о чем я. И непонимание это кроется именно в особенностях работы с svn. Я говорю о ситуации (довольно стандартной для git), когда разработчик разрабатывает фичу в отдельной ветке, чтобы не засорять develop или master ветки. В таком случае ваш план выглядит именно как извращение — ради правки в другой ветке создавать отдельную рабочую копию. Да и вообще создание второй рабочей копии выглядит как извращение, откровенно говоря, в любом случае.
С другой стороны это именно провоцирует ошибки. Если бы я хотел удалить директорию, я бы удалил ее и закоммитил это изменение. Это поведение никак не логично имхо.
Заметил особенность. Из-за отсутствия какиз-либо преимуществ svn над git/hg пользователи первой стараются изо всех сил доказать, что им и так хорошо, а все преимущества последних — совсем не преимущества =) Такие смешные, ей богу =)
Когда система контроля версий навязывает модель поведения — это первый звоночек, что пора ее менять. При работе с git я работаю с файлами так, как мне удобно, и это не вызывает никаких проблем.
«Посредине» ее никто не сломает. Прежде чем залить свою цепочку коммитов вы все равно сделаете пулл с сервера. Эти сто коммитов просто встанут перед вашими.
На самом деле, все ооочень красиво и ооочень удобно. Ваши потуги доказать, что «в гите все так же плохо» ни к чему не приведут. Правда.
Это НЕлогичное поведение. Осталась папка с таким же именем, изменилось только содержание.
Пример из жизни: решил поменять какую-то либу (уже в упор не помню какую) на новую. Снес из проекта старую папку с ней, вставил новую. Получил конфликт, на разгребание которого потратил время. Гит, к примеру, это съест и не поперхнется.
Второй пример: переделывали структуру папок с иконками для сайта. В итоге одна из папок после перетасовки оказалась на своем же месте. Точнее, на ее месте оказалась новая папка с таким же именем и содержанием. Но svn восприняла ее как новую и выкатила конфликт. И опять потеря времени на разруливание глупейшего конфликта.
>И какая польза проекту от такого коммита в метро? Кто им может воспользоваться?
Я выйду из метро, дойду до интернета и запушу все в центральный реп. При этом у меня с собой в метро будут все ветки, и я смогу нормально коммитить, а не набирать гигантских размеров коммит.
> какая гарантия, что кто-то «второй» держит у себя полную копию git/hg репозитария?
Все разработчики в сумме держат полную и атуальную версию репа. Восстанавливаем «центральный» реп из локального от любого автора, отсальные делают в него пуш — вуаля, полностью актуальный реп со всеми коммитами.
>Аналога команды stash нет, но если нужно поправить другую ветку, почему нельзя сделать:
Я говорил не об этом. Предположим, вы делаете некоторую фичу и обнаруживаете баг в главной ветке. Вам нужно переключиться в главную ветку и поправить этот баг. Но у вас есть незакоммиченные изменения, которые коммитить сейчас нельзя, т.к. код банально не дописан и не проверен. В git вы делаете stash, переключаете ветку, делаете фикс, переключаетесь обратно, делаете stash apply. Как вы разрулите это в svn.
>А если, как говорят многие пользователи git/hg, сервер недоступен/лежит, то и смысла от этого коммита для проекта — ноль.
Этот коммит зальется в центральный реп, как только оный станет доступен. И это могут быть несколько красивых коммитов, а не один толстый с тучей правок.
Я вижу, что вы не совсем понимаете или совсем не понимаете смысл работы в ветках…
Но я так и не понял проблемы… Проблема в том, что пользователь может назначить себе любое имя? Или в чем? Отказываться из-за этого от всех прелестей git/hg как-то глупо что ли…
Да из банальных даже примеров: я работаю дома, упал интернет, или я забыл его оплатить. У меня завтра дэдлайн, и я пишу код в метро. Ну или просто из-за какой-нибудь неведомой ебаной фигни покрашился реп (для свн тут вообще катастрофа, не так ли?).
Но на самом деле, эта проблема сильно теоретическая. Гораздо более насущной является проблема переключения в другую ветку посреди коммита и внесения там изменений. У svn, насколько я знаю, аналога команды stash нет.
Вы разрабатываете фичу. Делаете это в отдельной ветке. В этой фиче у вас уже сделано несколько коммитов, которых еще нет в главной ветке. И тут в главной ветке вы замечаете ошибку. Ошибка мешает вашей дальнейшей разработке. ее нужно поправить. Но править в вашей рабочей ветке нельзя, т.е. этот фикс не попадет в мастер-ветку до окончания разработки фичи, а значит не попадет и к остальным разработчикам и в релиз (если он состоится до завершения разработки фичи).
Я говорю с вами и натыкаюсь на стену непонимания. Вы, судя по всему, совершенно не понимаете принципов работы в ветках или принципов работы git`а…
И как потом эти внесенные изменения потом перенести в вашу рабочую копию? Вы совершенно не поняли, о чем я. И непонимание это кроется именно в особенностях работы с svn. Я говорю о ситуации (довольно стандартной для git), когда разработчик разрабатывает фичу в отдельной ветке, чтобы не засорять develop или master ветки. В таком случае ваш план выглядит именно как извращение — ради правки в другой ветке создавать отдельную рабочую копию. Да и вообще создание второй рабочей копии выглядит как извращение, откровенно говоря, в любом случае.
На самом деле, все ооочень красиво и ооочень удобно. Ваши потуги доказать, что «в гите все так же плохо» ни к чему не приведут. Правда.
Пример из жизни: решил поменять какую-то либу (уже в упор не помню какую) на новую. Снес из проекта старую папку с ней, вставил новую. Получил конфликт, на разгребание которого потратил время. Гит, к примеру, это съест и не поперхнется.
Второй пример: переделывали структуру папок с иконками для сайта. В итоге одна из папок после перетасовки оказалась на своем же месте. Точнее, на ее месте оказалась новая папка с таким же именем и содержанием. Но svn восприняла ее как новую и выкатила конфликт. И опять потеря времени на разруливание глупейшего конфликта.
Я выйду из метро, дойду до интернета и запушу все в центральный реп. При этом у меня с собой в метро будут все ветки, и я смогу нормально коммитить, а не набирать гигантских размеров коммит.
> какая гарантия, что кто-то «второй» держит у себя полную копию git/hg репозитария?
Все разработчики в сумме держат полную и атуальную версию репа. Восстанавливаем «центральный» реп из локального от любого автора, отсальные делают в него пуш — вуаля, полностью актуальный реп со всеми коммитами.
>Аналога команды stash нет, но если нужно поправить другую ветку, почему нельзя сделать:
Я говорил не об этом. Предположим, вы делаете некоторую фичу и обнаруживаете баг в главной ветке. Вам нужно переключиться в главную ветку и поправить этот баг. Но у вас есть незакоммиченные изменения, которые коммитить сейчас нельзя, т.к. код банально не дописан и не проверен. В git вы делаете stash, переключаете ветку, делаете фикс, переключаетесь обратно, делаете stash apply. Как вы разрулите это в svn.
>А если, как говорят многие пользователи git/hg, сервер недоступен/лежит, то и смысла от этого коммита для проекта — ноль.
Этот коммит зальется в центральный реп, как только оный станет доступен. И это могут быть несколько красивых коммитов, а не один толстый с тучей правок.
Я вижу, что вы не совсем понимаете или совсем не понимаете смысл работы в ветках…
Но на самом деле, эта проблема сильно теоретическая. Гораздо более насущной является проблема переключения в другую ветку посреди коммита и внесения там изменений. У svn, насколько я знаю, аналога команды stash нет.