Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
-A --addremove mark new/missing files as added/removed before committinghg ci -A это, конечно же, не поддерживает?hg ci -A, умеет ровно то что умеют add/remove по отдельности.
Историю вижу вплоть до коммитов по 1.txt
Я правильно понял, что use-case такой: Вы переименовали файл с помощью функций вашего bash или другой плюшки операционной системы и хотите от среды контроля версий чтобы она догадалась что вон тот файл на самом деле не просто добавлен, а что он ничто иное как переименованная копия прежнего файла?
hg ci -A -m «Project file structure changed» не обойдешься.Хотя конечно правильнее было бы пользоваться средствами рефакторинга, непосредственно взаимодействующими с VCS.
Git не сохраняет информацию о переименованиях.
mkdir test
cd test
git init
echo -e "Line1\nLine2" > aaa
git add -A && git ci -m "Commit 1"
mv aaa bbb
echo -e "Line3" >> bbb
git add -A && git ci -m "Commit 2"
git log --follow bbb # фигурируют оба коммита
git blame bbb # фигурируют оба коммита
Я вообще не понимаю, в чем проблема с 'hg mv', которым я обычно и пользуюсь.
Да это же вы неправильно бутерброд едите.
Даже если всё покрыто тестами, делая частые обновления во время недельного рефакторинга будете ловить чужие фейлы, которые отнимут время
Например, если у вас уже были красные тесты и пришли еще чужие — будешь как золушка крупу от гречки отделять.
встречаются чужие крэши
рефакторинг не каждого говна можно разбить на задачи по <8ч,
разоришься на кофе и журналах прогоняя все тесты перед каждым коммитом, плюс не сможешь работать с кодом пока он проверяется локально
Вообще мы что, про DVCS оба говорим, или вы защищаете svn?
Конечно кто-то должен чинить крэши, только в это время другие не должны стопориться из-за того что по вашему совету они чаще обновляются, от лукавого.
Не удивлен что у вас единый, независимый от величины и особенностей проекта, временной критерий «так».
Хотелось бы, чтобы была возможность зафиксировать в репозитории любое состояние кода, независимо от того, подумал ли я вовремя о том, что «тут надо бы создать ветку».
То, что при использовании VCS история (все версии) должна сохраняться вся и без изменений, для меня является как бы аксиомой.
В реальной жизни ответ мне кажется банальным. Версия — это то, к чему не поленились написать комментарий :)
Судя по моему опыту это полностью определяется традициями в команде.
А что с ней можно сделать, если выполнение полного реверсивного теста занимает несколько суток, и к тому же результаты тестов почти никогда нельзя проверить автоматически?
Область, где можно писать быстро работающие тесты с однозначной проверкой корректности выглядит для меня то ли как рай, то ли как детский сад
У нас полностью эквивалентных изменений вообще не бывает
Не вполне. Написать комментарий к коммиту можно всегда,
Адепты часто не хотят понимать, что области бывают разные и их любимые методики применимы не повсеместно
Но ваш подход мне кажется крайне не прагматическим и оторванным от реальности.
Например, священная корова многих методологий — это высокое покрытие кода автоматическими тестами. На практике есть куча областей, где это не возможно или не целесообразно.
Какой именно?
Я с удовольствием прочитаю книгу или хотя бы статью по любой современной методологии, которая пропагандирует и аргументирует отказ от автоматического тестирования.
Фанатичное следование канонам методологии.
Как же тогда вы будите организовывать работу если вам нужно будет сделать это в предметной области, где такие тесты сделать невозможно?
Вы серьёзно думаете, что таких областей нету или их мало?
например как тестировать выход графической подсистемы, где очень многие проблемы можно определить только визуально — например артефакты изображения, мерцания, ФПС просидающий только в определенных ситуациях и т.д.
Или например алгоритмы ИИ, которые недетерминированные by design.
Ну и еще сильно помогает design by contract, массированная проверка assert-ов для всех мыслимых и немыслимых вариантов.
Реверсивный тест — классическая методология тестирования, позволяющая убедиться в отсутствии регрессии. Для некоей версии, которую мы считаем корректной, сохраняем результаты выполнения на тестовых данных в качестве эталонных, а для последующих версий сравниваем (более или менее сложным алгоритмом сравнения) результаты выполнения с сохраненными эталонными результатами.
Покрытие тестами подразумевает наличие достаточно полного набора тест-кейсов, а проверка контрактов в живом приложении позволяет получать информативный фидбэк от тестеров, проводящих тестирование на стороне заказчика.
По моему опыту итерационное накопление получаемых от заказчика тестовый кейсов существенно уменьшает суммарную стоимость.
Мне кажется что создавая этот опрос Вы хотели знать ответ на вопрос «А сколько реально коммерческих продуктов создается тем или иным средством?».
1. git tf clone myserver:8080/tfs $/TeamProjectA/Main
2. Make changes to the file in the Git repo
3. git commit -a -m «commit one» (commit changes locally)
4. Make more changes
5. git commit -a -m «commit two»
6. git tf pull --rebase
7. git tf checkin
Нормальная ситуация. Когда ты сидишь один, тебе важна только твоя история и централизация на определенном сервере.
git init — и всё, репа готова. А в СВН нужен центральный репозиторий. Если упадёт сеть — остались без коммитов. Короче сплошные костыли. Не понимаю людей, которые используют СВН для одиночной разработки. Это изврат ведь.
Какую систему управления версиями вы используете? (в реальной работе, больше всего)