powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Системы контроля версий и Delphi
81 сообщений из 81, показаны все 4 страниц
Системы контроля версий и Delphi
    #40125182
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Являюсь Delphi - разработчиком.
Слышу уже много раз про такое чудо, как системы контроля версий. Кажется, что это решение всех проблем и серебряная пуля. Но вот почему-то у меня никак с ними не получается и хотелось бы понять, что я делаю не так. На данный момент сместо СКВ использую WinMerge - чтобы сравнить разные версии своего приложения.

Как мне поможет СКВ - если:

1) Куски кода часто мигрируют между файлами. Например, функция была расположена в одном модуле, перенесла её в другой. Сами модули могут переименовываться и мпенять своё местоположение в структуре каталогов.

2) Файлы проекта часто переименовываются - например, модуль uAddCustomer.pas - переименовано в uAddClient.pas и перемещено из папки
\Units в папку \BonusUnits

3) Переменные периодически переименовываются. Например, в проекте переменная называется ShowHints и присутствует в 220 модулях проекта. Потребовалось переименовать её в ShowHints2 - чтобы проверить и обьработать все куски кода, где она используется. Имя переменной оставлено в итоге ShowHints2. Бывают ситуации (и не так уж редко) - когда подбирается более удачное название переменной - и старая переменная заменяется во всём проекте.

4) Куча справочных и прочих файлов, которые меняются и мешаются при Merge.

5) Правки есть не только в pas-файлах - но и в вордовских/excel-файлах проекта, а также в FDB файлах. Они СКВ никак не отслеживаются.

6) Иногда код из одних файлов (например кеуски кода в Блокноте, которые ранее были в проекте - например, скачаны из Интернета "про запас") перекидывается в pas-файлы, а потом сами файлы Блокнота удаляются, либо модифицируются и переименовываются/меняют своё положение.

и еще куча различных ситуаций - сразу и не перечислишь

В итоге уже через 7 дней после работы с проектом WinMerge показывает кашу и невозможно понять, где именно были сделаны реально важные изменения, а где мелкие правки, какой код, когда и куда был перемещён. Через 30 дней процедура Merge уже становится абсолютно бессмысленной, т. к. может показать, что изменения были, скажем, в 300 файлах.

Но ведь тут пишут, что СКВ реально помогают и решают все проблемы, связанные с отслеживанием измннений в проекте. Но у меня вот не получается. Что я делаю не так?
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125183
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

ККК,

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

И это не только для Дельфи, а везде так
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125191
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
Что я делаю не так?
Всё, что вы делаете - вы делаете не так. К сожалению.

В вашей ситуации проще всего найти команду, которая уже использует системы контроля версий, и влиться в нее. Вас там всему научат.

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

Идея контроля версий простая. Вы написали какой-то код, сделали снимок состояния кода - "комит" (кстати, народ, как по-русски правильно - "комит" или "коммит"? ). Потом сделали какие-то изменения, сделали еще один снимок. И так далее. А потом уже с помощью системы контроля версий будете смотреть, что там вообще происходит, как меняется и т. д. К тому же, каждый комит можно (нужно) снабжать комментариями - что и зачем вы поменяли. Можно делать ветвления кода, возвращаться назад и т. д. Это не сложно, просто к этому надо привыкнуть.

Комитить лучше почаще. Не каждые пять минут, конечно, но каждое логически завершенное изменение - имеет смысл. Например, исправили баг - комит. Даже если исправление состоит из одного символа. А если изменение все тянется и тянется и никак не дойдет до логического конца - ну просто раз в какое-то время, раз в день, например.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125195
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
кстати, народ, как по-русски правильно - "комит" или "коммит"?
[За]фиксировать.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125199
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
  • нужно взять не кусок из СКВ а настоящую СКВ
  • например git
  • или Subversion сокращенно SVN
  • тщательно прочитать документацию на эту СКВ
  • потренироваться "на кошках"
При переименовании/перемещении файлов проекта это нужно делать не через Delphi или проводник, а через СКВ. И сразу коммитить, обязательно с комментарием. Если переименовывание/перемещение делать не через СКВ - то там будет видно что старый файл пропал, а новый - появился, и никакой связи между этим нет, т.е. как он назывался ранее - непонятно. Если сделано через СКВ то в истории будет видно что файл именно переименован, и история правок по файлу будет единая.

Я использую Delphi7 и TortoiseSVN - клиент для svn. Для однопользовательской работы он же может сделать локальное хранилище.
Мне потом понадобилась многопользовательская работа - я поставил отдельный сервер Subversion.
Нужно не забывать что само хранилище тоже нужно бэкапить.

У TortoiseSVN есть нормальный перевод интерфейса и документации на русский язык. И не только на русский.
Документацию можно скачать отдельно, в PDF или HTML виде.

https://tortoisesvn.net/support.html
https://tortoisesvn.net/docs/release/TortoiseSVN_ru/index.html

В начале там хорошо описаны основы работы с SVN.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125200
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87

4) Куча справочных и прочих файлов, которые меняются и мешаются при Merge.

Файлы которые взяты извне, и в данном проекте не меняются - обычно нет смысла контролировать их в СКВ. Для этого их можно либо разместить вне папки под контролем СКВ, либо поставить в игнор в СКВ.

Наталья87

5) Правки есть не только в pas-файлах - но и в вордовских/excel-файлах проекта, а также в FDB файлах. Они СКВ никак не отслеживаются.

СКВ предназначены для контроля текстовых файлов. Бинарные тоже может, но только в виде поменялся/не поменялся. Что конкретно в них поменялось - увидеть не получится.

Если "FDB файлах" - это база Firebird, то как правило нужно фиксировать не данные а метаданные.
Можно например сделать экспорт всех метаданных в файл, и система будет смотреть, изменилось ли содержание файла.
Но выгружать нужно всегда в одном и том же формате и одним и тем же инструментом. Если делать это через IBExpert то есть риск что формат поменяется (версии IBExpert выходят довольно часто) и тогда СКВ может не увидеть фактических изменений.

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

Практически все правки в проекте сначала записываю в виде задачи в системе контроля задач, у нас это Redmine.
В коммите пишу номер задачи. В самой задаче пишу номер коммита в SVN (номер ревизии). Номер задачи так же пишу в комментариях в Dekphi-коде, и в комментариях объектов в базе, что бы можно было почитать для чего это сделано, и что было еще сделано по этой задаче.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125208
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

В свое время я пользовался teamsource, потом множеством других.
Давненько это было. Хе-хе.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125222
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
[li]например git
  • или Subversion сокращенно SVN
На мой взгляд это не слишком удачные экземпляры для изучения. в особенности SVN. GIT по-линусовски переусложнён и требует для освоения определённую базу знаний. По-моему начать стоит с книги по CVS в том числе на русском . И уже после её прочтения браться за GIT. А SVN вообще пропустить как неудачную пародию, которая решает ровно одну проблему за счёт создания толпы других.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125264
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
git весьма прост для изучения и использования, если использовать его не через командную строку, а через какой нибудь приличный GUI. Я например использую GitKraken, он хоть и платный, зато имеет очень низкий порог входа и при этом очень мощный по своему функционалу.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125270
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
fraks
[li]например git
  • или Subversion сокращенно SVN
На мой взгляд это не слишком удачные экземпляры для изучения. в особенности SVN. GIT по-линусовски переусложнён и требует для освоения определённую базу знаний. По-моему начать стоит с книги по CVS в том числе на русском . И уже после её прочтения браться за GIT. А SVN вообще пропустить как неудачную пародию, которая решает ровно одну проблему за счёт создания толпы других.
Ага. Вот только 99% процентов людей обожающих git и хающих svn не выходят за рамки возможностей svn.

Если у вас одна команда совместно работающая над проектом - лучше брать svn. Намного удобнее и проще со всех точек зрения.

Если у вас несколько независимых команд работают над проектом - берите git. Он такой замороченный не просто чтоб свести своих пользователей с ума.

Если работаешь в одиночку, да без сервера, то можно взять rcs - просто, легко, удобно.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125273
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Если у вас одна команда совместно работающая над проектом - лучше брать svn. Намного удобнее и проще со всех точек зрения.
А можно поконкретнее, чем именно?
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125285
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
git весьма прост для изучения и использования, если использовать его не через командную строку, а через какой нибудь приличный GUI. Я например использую GitKraken, он хоть и платный, зато имеет очень низкий порог входа и при этом очень мощный по своему функционалу.

Это относится ко всем СКВ. Кстати, полноценных халявных оболочек (не плагинов в IDE) я нашел не так уж и много:
- SourceTree (git + mercurial (HG))
- Tortoise SVN/HG/Git
- древний RapidSVN
- чуть менее древний fuel-scm для Fossil (не пробовал)
asutp2
White Owl
Если у вас одна команда совместно работающая над проектом - лучше брать svn. Намного удобнее и проще со всех точек зрения.
А можно поконкретнее, чем именно?

Нормальной нумерацией коммитов, отсутствием ректальной системы пуллреквестов, простой командной строкой

@White Owl - rcs для топика с дельфями вряд ли подойдет - *nix-only
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125293
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Ага. Вот только 99% процентов людей обожающих git и хающих svn не выходят за рамки возможностей svn.

Если у вас одна команда совместно работающая над проектом - лучше брать svn. Намного удобнее и проще со всех точек зрения.
Я работал и с тем, и с другим. Мне лично git удобнее. Причем независимо от того, какое количество фич контроля версий мне нужно. Ну и пул-реквесты - как я понимаю, в svn отсутствуют.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125294
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
@White Owl - rcs для топика с дельфями вряд ли подойдет - *nix-only
С чего вдруг "only"? Она и для DOS собиралась и прекрасно работала. Кстати там я с ней и познакомился, хотя в те времена и не понял нафига контролировать версии.
При отсутствии сети и серверов - rcs единственный выбор.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125295
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
White Owl
Ага. Вот только 99% процентов людей обожающих git и хающих svn не выходят за рамки возможностей svn.

Если у вас одна команда совместно работающая над проектом - лучше брать svn. Намного удобнее и проще со всех точек зрения.
Я работал и с тем, и с другим. Мне лично git удобнее. Причем независимо от того, какое количество фич контроля версий мне нужно. Ну и пул-реквесты - как я понимаю, в svn отсутствуют.
Вот это как раз яркий представитель тех самых 99%... "мне удобнее"...
Git в принципе не может быть удобнее человеку. Он может быть удобнее компании-корпорации, но не отдельным разработчикам.

Объясняю на пальцах:
Subversion - это серверная система контроля версий. Не распределенная, а серверная. Тут каждый разработчик является полноценным maintainer'ом. В pull request'ах просто нет нужды.
Репозиторий - один единственный и находится на сервере. Ты хочешь исправить код в паре исходников? Делаешь svn update (получаешь текущую ревизию себе в локальную копию), исправляешь код в той паре исходников, делаешь svn commit. Всё.
Тебе система сама обнаружит что были изменения в каких-то файлах и отошлет их на сервер. И, кстати, не надо делать add каждый {неприличное_слово} раз, как в git...

А вот в git предполагается что ты (человек-developer) делаешь изменения в своем репозитории, потом делаешь этот самый pull request и ждешь когда специальный человек-maintainer проверит твою работу и вытащит из твоего местечкового репозитория в репозиторий выше уровнем, ну или отправит эти изменения обратно на доработку. Это полезно для корпораций и с учетом что ты работаешь в команде отвечающей за малый участок большого проекта.


Повторюсь:
Каждый разработчик может залезть в любой участок проекта? Тогда бери svn.
Хочешь разбить проект на модули и чтоб каждая отдельная команда работала только над своим модулем - бери git.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125299
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Никанор Кузьмич
пропущено...
Я работал и с тем, и с другим. Мне лично git удобнее. Причем независимо от того, какое количество фич контроля версий мне нужно. Ну и пул-реквесты - как я понимаю, в svn отсутствуют.
Вот это как раз яркий представитель тех самых 99%... "мне удобнее"...
Git в принципе не может быть удобнее человеку. Он может быть удобнее компании-корпорации, но не отдельным разработчикам.

Объясняю на пальцах:
Subversion - это серверная система контроля версий. Не распределенная, а серверная. Тут каждый разработчик является полноценным maintainer'ом. В pull request'ах просто нет нужды.
Репозиторий - один единственный и находится на сервере. Ты хочешь исправить код в паре исходников? Делаешь svn update (получаешь текущую ревизию себе в локальную копию), исправляешь код в той паре исходников, делаешь svn commit. Всё.
Тебе система сама обнаружит что были изменения в каких-то файлах и отошлет их на сервер. И, кстати, не надо делать add каждый {неприличное_слово} раз, как в git...

А вот в git предполагается что ты (человек-developer) делаешь изменения в своем репозитории, потом делаешь этот самый pull request и ждешь когда специальный человек-maintainer проверит твою работу и вытащит из твоего местечкового репозитория в репозиторий выше уровнем, ну или отправит эти изменения обратно на доработку. Это полезно для корпораций и с учетом что ты работаешь в команде отвечающей за малый участок большого проекта.


Повторюсь:
Каждый разработчик может залезть в любой участок проекта? Тогда бери svn.
Хочешь разбить проект на модули и чтоб каждая отдельная команда работала только над своим модулем - бери git.
Фигня какая-то. Commit+push - и всё, ничего не надо ждать.
А pull - это как раз аналог svn (cvs) update.

Да, хочу заметить, что (как минимум для винды) у git вполне удобный родной гуи-интерфейс присутствует (уже).
Архи-удобный тем, что ненавязчиво предлагает добавить новые файлы в репозиторий при коммите (не подпадающие под критерий игнорирования). Благодаря чему не надо "не забывать делать add".
Так что даже никакие Tortise не нужны.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125300
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
При отсутствии сети и серверов - rcs единственный выбор.

Почему это?
Например в том же TortoiseSVN в комплекте идет локальный сервер.
С TortoiseGit думаю примерно так же.
Git под винду тоже встречал.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125303
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для SVN есть только один бесплатный GUI клиент, которым в принципе как-то можно пользоваться - TortoiseSVN. Но он работает только под Windows. Для Linux есть RabbitVCS, ещё под Eclipse есть Subversive и Subclipse, но непонятно они ещё сопровождаются или нет. Единственный более-менее приличный клиент под Linux - SmartSVN, но он платный.

Короче, есть большая проблема с GUI. Если TortoiseSVN по какой-то причине не подходит, то либо покупать SmartSVN, либо мучиться с бесплатными и полузаброшенными клиентами.

Вторая большая проблема, что SVN просто капец как тормозит. Для теста запустил команду log на одном из репозиториев - занимает 10-15 секунд. Команда list - 2 секунды. Сравнить допустим две ветки в RabbitVCS/Subversive/Subclipse - наверное полминуты или минуту (отправляется просто гигантское количество запросов в репозиторий). Можно запускать сравнение и идти кофе заваривать. Но это полбеды, эта штука покажет список измененных файлов, а потом ещё чтобы посмотреть изменения в каждом из файлов нужно секунд 5-10. Это делает работу просто невыносимой. TortoiseSVN и SmartSVN работают почему-то быстрее, не сказать что летают, но терпимо.

Наконец, третья проблема - не очень удобно ревьювить код. Одно дело я в gitlab вижу назначенные на меня pull-request, могу без особых сложностей и тормозов через веб-интерфейс посмотреть что изменилось в коде, написать комментарии. В SVN всего этого нет.

Конечно как-то приходится пользоваться svn, но это больше мучение чем работа.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125306
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Git в принципе не может быть удобнее человеку. Он может быть удобнее компании-корпорации, но не отдельным разработчикам.
...пропущено...
А вот в git предполагается что ты (человек-developer) делаешь изменения в своем репозитории, потом делаешь этот самый pull request и ждешь когда специальный человек-maintainer проверит твою работу и вытащит из твоего местечкового репозитория в репозиторий выше уровнем, ну или отправит эти изменения обратно на доработку. Это полезно для корпораций и с учетом что ты работаешь в команде отвечающей за малый участок большого проекта.
Сорян конечно, но ты заблуждаешься.
Я вот например для нескольких своих личных проектов использую git без всяких проблем. Там я единственный разработчик, и нет никаких других специальных людей, но при этом ведутся разные ветки, точно также могу сделать pull реквест из одной в другую и т.д.
И выше справедливо заметили, что git очень быстр. Сравниваю свой же опыт работы с svn, когда все реально тормозило не по детски....
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125323
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, как я и сказал, в SVN сделали быстрой ровно одну операцию: сравнение текущего состояния рабочей копии с последней закоммиченной. Всё остальное загубили насмерть.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125327
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за глупый вопрос. О каких пулл-реквестах в гите идет речь? Разве это к гиту относится? Я почему-то думал, что это фича всяких битбакетов-гитхабов-гитлабов.

То есть вот я сделал локально git init, git branch, потом решил перенести изменения из бранча в мастер и... Тут как-то делается пулл-реквест?
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125330
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ares_ekb
Конечно как-то приходится пользоваться svn, но это больше мучение чем работа.

После git работа с svn вспоминается как ад. В git просто надо с самого начала более-менее понять как он работает и тогда с ним никакой проблемы работать нет - хоть с командной строки, хоть с gui - я, например, практически все делаю в нем из командной строки и не вижу в этом ничего сложного, gui обычно только для разруливания конфликтного мержа, или посмотреть какую-нибудь замороченную историю с кучей ветвлений. И я бы наоборот советовал изучение git именно с командной строки и начинать.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125335
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,

да, согласен, это действительно фича не самого git, а разных надстроек. Но для svn я ничего подобного не видел. Обычно просто на словах говорится или где-нибудь в Jira пишется, что нужно посмотреть такую-то ветку или что по ней есть такие-то вопросы или что её можно мержить и т.п. Если бы для SVN был аналог GitLab, то требования к клиенту сильно упростились бы, не нужно было бы сравнивать ветки (в svn это работает достаточно медленно). То, что для SVN таких систем нет (может я о них не знаю) на мой взгляд это тоже минус.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125338
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил ещё одну фичу, от которой за джва года использования svn уже успел отвыкнуть.

В git сначала комитишь, потом обновляешься из основного репозитория и сливаешь ветки, разрешая конфликты. В svn сначала обновляешься, потом разрешаешь конфликты, потом комитишь. В svn есть шанс таким образом похерить свои изменения. У меня такого не было, но поначалу, когда волею судеб переходил с git на svn, то было страшно обновляться из репозитория, незакомитив свои изменения.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125339
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Извините за глупый вопрос. О каких пулл-реквестах в гите идет речь? Разве это к гиту относится? Я почему-то думал, что это фича всяких битбакетов-гитхабов-гитлабов.

То есть вот я сделал локально git init, git branch, потом решил перенести изменения из бранча в мастер и... Тут как-то делается пулл-реквест?
Нет это фича git, см учебник progit глава 5 (команда $ git request-pull origin/master myfork). Но можно в одиночку работать без нее

В SVN, насколько я помню, тоже надо руками делать svn add *.x

И вообще про Мercurial забыли
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125342
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Alexander A. Sak
Извините за глупый вопрос. О каких пулл-реквестах в гите идет речь? Разве это к гиту относится? Я почему-то думал, что это фича всяких битбакетов-гитхабов-гитлабов.

То есть вот я сделал локально git init, git branch, потом решил перенести изменения из бранча в мастер и... Тут как-то делается пулл-реквест?
Нет это фича git, см учебник progit глава 5 (команда $ git request-pull origin/master myfork). Но можно в одиночку работать без нее


Спасибо, не знал.

git request-pull создает текст, который надо просто отправить владельцу репозитория. В этом тексте -- описание того, где находятся изменения (адрес репозитория, ветка, начальный коммит). Ну как-то не тянет на киллер-фичу ИМХО.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125347
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak
Спасибо, не знал.
git request-pull создает текст, который надо просто отправить владельцу репозитория. В этом тексте -- описание того, где находятся изменения (адрес репозитория, ветка, начальный коммит). Ну как-то не тянет на киллер-фичу ИМХО.

Ну да. А PR GitHub или MR GitLab - они точно о том же: "Я, типа, хочу, чтобы изменения из моей ветки взяли в общую". Там просто всякого блек-джека больше. Сам термин "pull request" пошел с тех времен, когда git использовали как распределенную систему без центрального репо (ради чего он и задумывался) и кто-то мог получить изменения из ветки кого-то другого сделав "git pull" из его ветки (не давая другому доступа на запись в своем репозитории).
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125364
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
В SVN, насколько я помню, тоже надо руками делать svn add *.x
Только один раз - сказать системе что файл надо держать под контролем. На каждый комит ее повторять не нужно.

Siemargl
И вообще про Мercurial забыли
А это прямой конкурент git'у. То же самое по возможностям, но по другому внешне.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125365
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
White Owl
При отсутствии сети и серверов - rcs единственный выбор.

Почему это?
Например в том же TortoiseSVN в комплекте идет локальный сервер.
С TortoiseGit думаю примерно так же.
Git под винду тоже встречал.
Да конечно, просто как-то нелогично ставить сервер-клиент на одну и ту-же машину. Ну обычно... Хотя да. Соглашусь - rcs не единственный.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125367
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
White Owl
Git в принципе не может быть удобнее человеку. Он может быть удобнее компании-корпорации, но не отдельным разработчикам.
...пропущено...
А вот в git предполагается что ты (человек-developer) делаешь изменения в своем репозитории, потом делаешь этот самый pull request и ждешь когда специальный человек-maintainer проверит твою работу и вытащит из твоего местечкового репозитория в репозиторий выше уровнем, ну или отправит эти изменения обратно на доработку. Это полезно для корпораций и с учетом что ты работаешь в команде отвечающей за малый участок большого проекта.
Сорян конечно, но ты заблуждаешься.
Я вот например для нескольких своих личных проектов использую git без всяких проблем. Там я единственный разработчик, и нет никаких других специальных людей, но при этом ведутся разные ветки, точно также могу сделать pull реквест из одной в другую и т.д.
И выше справедливо заметили, что git очень быстр. Сравниваю свой же опыт работы с svn, когда все реально тормозило не по детски....
Ну то что git ты используешь в рамках возможностей svn согласен?
А тормоза... не верю. На моих машинах что одно, что другое работают с одинаковой скоростью.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125371
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
На моих машинах что одно, что другое работают с одинаковой скоростью.
А сервер на другой машине или той же? Apache Subversion или другой? По какому протоколу работает? https?
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125372
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb
White Owl
На моих машинах что одно, что другое работают с одинаковой скоростью.
А сервер на другой машине или той же? Apache Subversion или другой? По какому протоколу работает? https?
На другой, но в LAN. Gnu. Ssh.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125373
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Ares_ekb
пропущено...
А сервер на другой машине или той же? Apache Subversion или другой? По какому протоколу работает? https?
На другой, но в LAN. Gnu. Ssh.
Сравниваю с git в той-же самой lan, но на другом физическом сервере, на собственном git протоколе.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125378
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

я находил какую-то противоречивую информацию по производительности. Где-то пишут, что по ssh должно работать ощутимо быстрее, чем по https. Где-то пишут, что в последних версиях особой разницы нет. Вроде по https более гибкие возможности распределения прав доступа и видимо поэтому у нас этот протокол и используется, но сам я это не настраивал, это делали админы. Нужно будет уточнить, может они ssh включат.

Плюс у нас всё это ещё работает через vpn. То, что очень тормозит это факт. Но в чем причина... Я пытался смотреть что происходит через Wireshark. SVN-клиент отправляет просто кучу запросов на сервер, и у меня ощущение, что проблема именно в этом, и такая схема быстро работать не может.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125392
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Siemargl
В SVN, насколько я помню, тоже надо руками делать svn add *.x
Только один раз - сказать системе что файл надо держать под контролем. На каждый комит ее повторять не нужно.
Так и в гите тоже, только наоборот, что не в .gitignore само пропишется. Я недопонял мысьль
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125413
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
Являюсь Delphi - разработчиком.

Смешно.

Наталья87
Но вот почему-то у меня никак с ними не получается и хотелось бы понять, что я делаю не так.

Судя по описанию случаев, Вы устраиваете вместо приложения дикий бардак и надеетесь, что инструмент наведёт в нём порядок.

Наталья87
В итоге уже через 7 дней после работы с проектом WinMerge показывает кашу и невозможно понять, где именно были сделаны реально важные изменения, а где мелкие правки, какой код, когда и куда был перемещён. Через 30 дней процедура Merge уже становится абсолютно бессмысленной

Похоже, главное, чего Вы не понимаете - система контроля версий позволяет собрать некий набор изменений в единую сущность, присвоить этому набору имя/номер и дальше манипулировать этим набором изменений как единым целым. Например - собрать в версию наборы изменений 1, 3 и 5 - пропустив 4 и 2, либо взять изменения, сделанные в версии 3.2 по задаче 456, и выполнить их же в версии 3.1

Никанор Кузьмич
Я бы git рекомендовал, он мне больше всего нравится.

Ну Вы даёте. Это всё равно что первокласснику вместо букваря подсовывать Канта.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125414
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Если у вас одна команда совместно работающая над проектом - лучше брать svn. Намного удобнее и проще со всех точек зрения.

После того, как я перешёл с SVN на Mercurial, я оценил, насколько лучше в последнем мержи. Возвращаться к SVN с его кошмариками уже категорически не хочу.

Git по удобству использования здорово уступает Mercurial-у, но таки лучше SVN. Я согласен с тем, что SVN куда проще, но 95% времени с системой контроля версий занимают сложные мержи - и именно здесь SVN проигрывает в одну калитку. По сравнению с этим выучить нетривиальные особенности гитовых команд - мелочь, просто один раз сесть и разобраться.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125415
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
Git по удобству использования здорово уступает Mercurial-у

Mercurial был задуман как упрощенный вариант Git. Внутри там по сути все то же самое. Я после SVN как раз начинал с него, но, похоже, что Mercurial он-таки (как по мне, так по непонятным причинам) гонку с Git в итоге проиграл.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125418
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Ага. Вот только 99% процентов людей обожающих git и хающих svn не выходят за рамки возможностей svn.
Как нужно это утверждение понимать? Типа, "если вы используете только те функции git, которые есть в SVN, то использоавть git запрещено"?

White Owl
Git в принципе не может быть удобнее человеку.
Это называется "есть мое мнение и есть неправильное"

White Owl
Тут каждый разработчик является полноценным maintainer'ом.
Что значит "полноценным"? И почему это должно быть важно? Когда я работаю в коммерческой организации, мне в первую очередь важно, чтобы зарплату платили вовремя и мозги не компостировали, а уж полноценный у меня репозиторий или нет - ваще фиолетово.

White Owl
Ты хочешь исправить код в паре исходников? Делаешь svn update (получаешь текущую ревизию себе в локальную копию), исправляешь код в той паре исходников, делаешь svn commit. Всё.
Не заметил, чтобы в git было иначе.

White Owl
И, кстати, не надо делать add каждый {неприличное_слово} раз, как в git...
Любой клиент делает это автоматом. А в командной строке надо напечатать только 10 символов.

White Owl
А вот в git предполагается что ты (человек-developer) делаешь изменения в своем репозитории, потом делаешь этот самый pull request и ждешь когда специальный человек-maintainer проверит твою работу и вытащит из твоего местечкового репозитория в репозиторий выше уровнем, ну или отправит эти изменения обратно на доработку.
Это не в git предполагается. Если вам приходится слать пул-реквесты, это значит, что админ репозитория так решил. В его власти дать вам право обойтись без пул-реквестов.

Alexander A. Sak
git request-pull создает текст, который надо просто отправить владельцу репозитория. В этом тексте -- описание того, где находятся изменения (адрес репозитория, ветка, начальный коммит). Ну как-то не тянет на киллер-фичу ИМХО.
Киллер - не киллер, это философский вопрос. Главное тут - какую проблему решает фича. Она решает проблему защиты репозитория от плохого кода. Допустим, у вас на проекте есть джуниор, за которым нужен глаз да глаз, или у вас просто принято делать код ревью, или вообще опенсорс репозиторий, куда может прислать код кто угодно. Человек, который высылает свой код, делает свою ветку, комитит изменения, а потом делает попытку merge с основным репозиторием. Вы получаете уведомление, открываете пул-реквест, смотрите, какое изменение вам предлагается. Если устраивает - жмете "принять". Все, код у вас в репозитории. Я бы не назвал это киллер фичей, но просто фича, которая в гите есть, а в SVN - нет.

softwarer
Ну Вы даёте. Это всё равно что первокласснику вместо букваря подсовывать Канта.
А че такова? Я с гита и начинал
Сначала первые несколько лет работал на проектах без контроля версий вообще. Потом подумал, что надо бы освоить контроль версий. А то все говорят "маст хэв", а я ни сном ни духом. Почитал холивары в энторнетах. Показалось, что гит таки получше. Начал использовать на своих пет проектах. Ну там все просто - ведешь себе линейную историю изменений и все. Попробовал пару вещей, чисто для себя - ветки посоздавать, мерджи поделать. Потом уже поработал на проектах с большими командами с и git, и с SVN. Как по мне, не так страшен черт, как его малюют. Ну вот если вообще без опыта работы с контролем версий придти на проект с CI, пул-реквестами, гитхабом и прочим фаршем, - да, с непривычки будет тяжело. А если потихоньку вливаться, то какая разница?
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125421
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkfka2
Mercurial был задуман как упрощенный вариант Git. Внутри там по сути все то же самое.

Да на здоровье. Но пользоваться им существенно удобнее. Кроме того, не знаю, насколько это особенность именно системы, а насколько - оболочки, но при использовании Tortoise с Mercurial есть совершенно восхитительная и отсутствующая в Tortoise/git возможность включать в коммит только некоторые изменения из файла. Это очень экономит время.

fkfka2
но, похоже, что Mercurial он-таки (как по мне, так по непонятным причинам) гонку с Git в итоге проиграл.

Согласен. Если бы я был технологическим лидером большого проекта, то сейчас начинать использовать Mercurial я бы уже не стал. А вот если бы я был начинающим разработчиком, которому для наколеночных поделок надо хоть как-то разобраться с контролем версий - думаю, Mercurial стал бы как раз таки лучшим выбором на ближайшие годы.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125422
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
А че такова? Я с гита и начинал

Думаю, Вы это делали не так, как Наташа. Судя по её вопросам - с git-ом она окончательно запутается.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125425
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
Например в том же TortoiseSVN в комплекте идет локальный сервер.
Не так - subversion (сам) умеет работать и в режиме сервера и в режиме клиента.
При файловом доступе к репозиторию один и тот же процесс является и клиентом и сервером.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125426
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
СКВ реально помогают и решают все проблемы, связанные с отслеживанием измннений в проекте. Но у меня вот не получается. Что я делаю не так?

Вместе с СКВ, отслеживание изменений в исходниках становится неотъемлемой частью процесса разработки. "Файлики-на-заметку" легко укладываются в репозиторий, меняются, удалятся; бинарники (fbd, exe, dcu ...) легко игнорируются. Что не так делаешь - не используешь нужный тебе инструмент и разгребаешь хаос, вместо того, чтобы предупредить его возникновение. СКВ помогает с этим - задаёт культуру ведения проекта. Плюс git'а - используешь в любое время на то количество процентов заложенного в нем функционала, насколько тебе нужно в конкретном случае; с ним - правила определяешь ты с командой, настолько, насколько комфортно. В этом случае, для захода, git - оптимально. Почитай перед сном книжку , поставь Git for Windows + адекватный gui-клиент ( Git Extensions или SmartGit ) + инструмент сравнения и слияния (знакомый тебе WinMerge или Kdiff3 ).
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125456
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Наталья - новичек в системах версионного контроля и ей надо просто быстрое вхождение - то я-бы
все таки предложил SVN. Он проще с точки зрения состояний. Есть просто update,add,commit и вобщем-то
этого достаточно чтобы начать работать. И меньше шансов напортачить или закопаться в какой-то пустяк.

Чтобы работать с git надо уяснить чуть более широкую концепцию stages, которые проходят файлы в этой
системе. Желательно по картинке. В интернетах полно диаграмм которые моделируют состояния файлов
в этой системе.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125461
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как-то так для Git

...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125476
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
при использовании Tortoise с Mercurial есть совершенно восхитительная и отсутствующая в Tortoise/git возможность включать в коммит только некоторые изменения из файла.
SourceTree, емнип, умел что-то такое. Так что при работе с git в какой-то степени есть такая возможность.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125497
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Там, понимаешь, еще в чем дело - у Гита, по сути, нет такого, как "локальный репо" или "удаленный репо". В действительности там все репо полностью равноправны и можно хоть целым кодлом работать вообще без какого-то централизованного сервера. Выделенный репо на сервере (да тот же Гитхаб, например) используется только для более простой синхронизации кода. И, как я писал, достаточно просто слегка понимать как у него устроена система версий, которых и него, на самом деле, в прямом смысле и нет :)), и веток, которых у него тоже на самом деле нет :)) И вся эта с виду сложная картинка она становится абсолютно не нужна, потому все становится совершенно прозрачно. Достаточно просто вместо заучивания каких-то магических команд потратить от силы час и прочитать в гитбуке пару глав про это. Для меня например то как работает SVN (правда, я с ним много меньше работал) это вот действительно какое-то шаманство :))
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125501
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой личный опыт с этим не соглашается. У svn пожалуй главный недостаток - нельзя поработать без сети "в самолёте".

А в Гите можно и бранчи создавать и переключаться и мёржить все в оффлайне. Это пожалуй мой главный довод
против SVN, а в остальном (в дидактическом смысле) svn для начинающих - удобен. Кажущийся либерализм
веток такой как принципиальное отсутсвие например trunk или develop может быть как преимуществом так и
недостатком. Иногда новичек сам не знает какая ему нужна структура. И здесь может быть лучше как раз
предложить типовую структуру бранчевания а потом уже новичек с опытом сам поймет что ему надо.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125508
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
предложить типовую структуру бранчевания

При которой в любой момент кто угодно может наложить кривым коммитом в общую ветку. Уже проходили :) Может сейчас с СВН как-то по другому работают, я просто не знаю.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125519
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы (многие) как-то забываете, что топикстартер работает в одно лицо и ничего из "распределённости" git - ей просто не требуется.
SVN брать или тот же Fossil - вопрос десятый.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125533
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
что топикстартер работает в одно лицо

Значит в одно лицо себе и накоммитит в единственную ветку :)) У меня тоже есть проекты, где я один работаю, но я все равно в основную ветку ничего и никогда напрямую не пишу. Только через временную ветку и потом мерж в основную. Благо в гите и то и другое одной командой делается. Не знаю как сейчас это в SVN, но, помню, что когда-то там работа с ветками была целым ритуалом к которому никого ниже лидов не допускали :) А распределенность тут вообще не при чем. Кроме того гит сейчас это фактически стандарт де-факто, так что если учить что-то с нуля, то, по-моему и вопросов никаких. Хотя, можно, конечно, меркуриал попробовать, тем более с него на гит перейти потом вообще элементарно.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125535
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
git тоже можно использовать локально. Я иногда делаю git init в каталоге с конфигами. Когда эспериментирую.
Что понять что сломало базу или сервис.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125552
Сотрудник Главного Управления
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
git весьма прост для изучения и использования, если использовать его не через командную строку, а через какой нибудь приличный GUI
А вот и пошли "Вредные советы".
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125574
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
git вообще не прост если говорить о подходах в слиянии веток. Просто надо потратить время на git
примерно как базовый курс языка программирования. Я-бы предложил 2 недели. И непонятно каким
образом UI отвечает на все вопросы? Всё равно матчасть надо пройти. В противном случае кажущаяся
простота UI заводит в тупик. И чел приходит в форум - с криком "спосите-помогите" а ему говорят
- "вспомни что ты последнее сделал" - а он в ответ - "я не помню... я сделал много-много всего и вот..."
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125581
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати svn тоже не прост :) Буквально сегодня я добавил новую папку и другой разработчик добавил такую же папку, но с немного другим содержимым. Всё, трындец, даже TortoiseSVN не может разрешить эти конфликты. Пришлось сливать вручную копированием файлов. Это ещё хорошо, что каждый работал в своей ветке. Иначе это была бы гарантия потерянных изменений. В плане слияния и разрешения конфликтов svn по-моему существенно сложнее.

С TortoiseSVN я ещё как-то смог в этом разобраться. А в том же RabbitVCS, SmartSVN или CLI просто невозможно понять что происходит в такой ситуации.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125589
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы как-то словили забавный дефект в SVN. Был связан с регистро-нечувствительностью
файловых имен в Windows и в Linux - наоборот. Не фиксился никак. Надо было просто
на linux машине переименовать кучу файлов. И повторить svn update на остальных.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125601
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ну, этим и гит любит грешить. Скажем, если на винде сказать ему git add somefile.ext - он молча покажет "ок" и ни фига не сделает, потому что SomeFile.ext.

SVN, если мне не изменяет память, имел багу с временем файлов. Оно на FAT округляется до двух секунд, поэтому время от времени после svn update на диске оказывался файл, "изменённый" по сравнению с репозиторием.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125612
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
git вообще не прост если говорить о подходах в слиянии веток.

Я первый раз с rebase вообще втупил. Делаю локально на родительскую, рашрешаю конфликты, и push на сервер (в свою же на сервере). А история-то локально переписалась и он мне говорит - "нефига, делай сначала pull". И при pull, понятно, возникают те же самые конфликты, только в противоположную сторону. И я полчаса тупил, пока понял, что я по кругу разруливаю одни и те же конфликты, еще причем с самим собой же. Запомнил просто после этого уже на автомате, что после rebase надо всегда "push --force" делать.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125617
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
git вообще не прост если говорить о подходах в слиянии веток. Просто надо потратить время на git
примерно как базовый курс языка программирования. Я-бы предложил 2 недели. И непонятно каким
образом UI отвечает на все вопросы? Всё равно матчасть надо пройти. В противном случае кажущаяся
простота UI заводит в тупик. И чел приходит в форум - с криком "спосите-помогите" а ему говорят
- "вспомни что ты последнее сделал" - а он в ответ - "я не помню... я сделал много-много всего и вот..."
вот именно, на какую то утилиту третьей очередности нужности и нужно потрахить кучу времени

зы. логи то конечно есть, то я как то встрял с гитом, что после мерджа, забыв сначала сделать локальный коммит, нереально восстановить почти совсем свою реплику
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125619
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще была история про одного разработчика который любил Windows-like переводы строк.
А другие - не любили. Ну вобщем его с нами уже нет
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125623
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Еще была история про одного разработчика который любил Windows-like переводы строк.
А другие - не любили. Ну вобщем его с нами уже нет

Так git давно уже это сам разруливает. Коммитишь с винды в CRLF он потом тебе на юниксе нормально в CR вернет. Вот реальная засада с этим когда ты какой-то конфиг правишь в ноутпаде а потом его на юниксовый сервер по SCP заливаешь и не можешь понять почему он у тебя вообще грузится перестал.

Было у меня на одной работе еще в самом начале двухтысячных. У нас был один сервер под каким-то древнючим HPUX. Однажды оказалось что эта первобытная хрень просто вообще не читает /etc/fstab, если ты там вместо табов хоть где-то пробелы поставишь
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125626
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

ты что, с make не знаком ? он и сейчас так умеет
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125628
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
после мерджа, забыв сначала сделать локальный коммит, нереально восстановить почти совсем свою реплику

Ты там что-то просто натворил не то, потому в таком случае гит выдает:
giterror: Your local changes to the following files would be overwritten by merge:
....
....
Please commit your changes or stash them before you merge.
Aborting

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

Может у тебя просто была какая-то специфичная GUI-тулза? Потому что у нас когда-то целый SVN-репозиторий с 5+ лет историей чуваки полностью угробили каким-то кривым GUI-плагином к Visual Studio
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125630
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

ничего сложного сломать гит. потом я нашел как это разрулить - но там настоящая эльфийская магия

я с тех пор про "простоту и дружелюбность" гита и слышать не желаю
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125682
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
fkthat,

ничего сложного сломать гит. потом я нашел как это разрулить - но там настоящая эльфийская магия

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

Тут многие хают GUI утилиты, а зря. Например в GitKraken есть классная фишка - можно смотреть возможные конфликты еще ДО выполнения слияния/пуллреквеста. Например мы с коллегой сделали две ветки от базовой и каждый пилит функционал своей задачи в своей ветке. Так вот, GUI тулза гиткракен позволят видеть, а нет ли потенциальных конфликтов между нашими ветками, а также между моей веткой и базовой веткой. Т.е. я делаю коммиты в свою ветку и сразу вижу, а нет ли конфликтов с веткой моего коллеги, а также с базовой веткой. Очень удобно.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125684
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
Siemargl
fkthat,

ничего сложного сломать гит. потом я нашел как это разрулить - но там настоящая эльфийская магия

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

Тут многие хают GUI утилиты, а зря. Например в GitKraken есть классная фишка - можно смотреть возможные конфликты еще ДО выполнения слияния/пуллреквеста. Например мы с коллегой сделали две ветки от базовой и каждый пилит функционал своей задачи в своей ветке. Так вот, GUI тулза гиткракен позволят видеть, а нет ли потенциальных конфликтов между нашими ветками, а также между моей веткой и базовой веткой. Т.е. я делаю коммиты в свою ветку и сразу вижу, а нет ли конфликтов с веткой моего коллеги, а также с базовой веткой. Очень удобно.

Тоесть Кракен осущенствляет ненужную активность по сравнению всех веток со всеми. Да и вообще зачем
сравнивать всё со всеми? Коллега все равно синхронизирует свою ветку с мастером. Зачем вам нужна ветка коллеги?
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125714
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

нда, "не видел, но осуждаю" (c) ? ))))
ты не думал, что разработчики гиткракена функционал сравнения веток сделали настраиваемыми и сравнивается не все подряд, а только то, что указано пользователями?

и да, где я говорил о ветке master? базовой веткой может быть dev-rel-13-b4, у коллеги feature/se-723, у меня fix/SE-821 и эти наши ветки созданы из dev-rel-13-b4.

SVN мозги убил, да?)
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125716
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
Siemargl
fkthat,

ничего сложного сломать гит. потом я нашел как это разрулить - но там настоящая эльфийская магия

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

Нарыл магию
michael_v89 04.11.2019 в 09:08Если у вас на локальной машине был изменен файл и не закоммичен, а на другой закоммитили изменения в том же файле, то Git вам не даст сделать pull/merge, в отличие от SVN. Надо сделать git stash save, потом git pull, потом git stash pop , и разрешить конфликты если они будут.
Только у меня случился неполный pull/merge и пздс
Всего то я работал поочередно на двух машинах - домашней и рабочей

А выделенных команд я до сих пор не знаю
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125721
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
А выделенных команд я до сих пор не знаю

Сразу бы так и сказал.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125748
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
mayton,

нда, "не видел, но осуждаю" (c) ? ))))
ты не думал, что разработчики гиткракена функционал сравнения веток сделали настраиваемыми и сравнивается не все подряд, а только то, что указано пользователями?

и да, где я говорил о ветке master? базовой веткой может быть dev-rel-13-b4, у коллеги feature/se-723, у меня fix/SE-821 и эти наши ветки созданы из dev-rel-13-b4.

SVN мозги убил, да?)

Мда. Может быть. Некоторым мозги убивает SVN. А некоторым графические приложухи. Жизнь - такая странная штука.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125759
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat

Было у меня на одной работе еще в самом начале двухтысячных. У нас был один сервер под каким-то древнючим HPUX. Однажды оказалось что эта первобытная хрень просто вообще не читает /etc/fstab, если ты там вместо табов хоть где-то пробелы поставишь

Я считал что война Табщиков против Пробельщиков закончилась как только появились IDE,
которые просто грамотно считают отступы в пробелах.

А вообще последнее полезное применение табам я помню когда изучал Ассемблер. Там както
tab органично смотрелся.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40125977
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
White Owl
пропущено...
Только один раз - сказать системе что файл надо держать под контролем. На каждый комит ее повторять не нужно.
Так и в гите тоже, только наоборот, что не в .gitignore само пропишется. Я недопонял мысьль

Все, доехало. В гите для измененных staging надо делать перед каждым коммитом.

Неудобно только в командной строке.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126015
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открой для себя ключ -a у git commit.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126017
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня был грешок с git. Я в один из репо по ошибке закоммилил *.avi файл. Не очень большой. Но теперь
при развёртывании моего проекта на любом удалённом ноутбуке он скачивается даже будучи по факту
удалённым в HEAD ревизии мастера.

Хорочо-бы иметь возможность "потереть историю". Без пересоздания проекта. Тоесть я прекрасно осознаю
действия. Проект - мой личный и никого больше это не аффектит.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126018
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton

Хорочо-бы иметь возможность "потереть историю". Без пересоздания проекта. Тоесть я прекрасно осознаю
действия. Проект - мой личный и никого больше это не аффектит.

Пример использования:
Код: powershell
1.
git filter-branch --prune-empty --index-filter "git rm -rf --cached --ignore-unmatch file1 dir1" HEAD


После выполнения команды файл file1 и каталог dir1 будут полностью удалены из истории проекта, опция --prune-empty также удалит образовавшиеся пустые коммиты, которые были связаны с этими файлами/каталогами.

Поскольку filter-branch формирует бэкап, для возможности отката, то для полной очистки потребуется удалить .git/refs/original/, а затем выполнить очистку и оптимизацию репозитория с помощью git gc:

Код: powershell
1.
rm -rf .git/refs/original && git gc --aggressive


Следует учесть, что история проекта будет фактически переписана заново, а значит всем пользователям потребуется заново клонировать полученный репозиторий.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126024
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
istrebitel, спасибо.

А правильно-ли я понимаю что после git push соответсвующие бинари будут удалены и в github?
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126025
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О чем я и говорил, простые по сути вещи делаются в гите нетривиально

[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126055
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да как драть зубы через ж....

Можно было простой одной командой что-то сделать. И потом git push.
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126066
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Да как драть зубы через ж....
Можно было простой одной командой что-то сделать. И потом git push.

Автору просто неведомо, что в SVN его средствами это не делается вообще никак. Только какие-то сторонние утилиты, не имеющие к SVN никакого отношения и поэтому вообще непонятно какого качества. Потому что там это можно сделать только какой-то анусной фильтрацией бинарного дампа всей репы с последующим созданием новой репы из результатов этой фильтрации. Но, человеку, который считает "git stash" китайской магией подобное неведение вполне простительно :)
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126089
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
mayton
Да как драть зубы через ж....
Можно было простой одной командой что-то сделать. И потом git push.

Автору просто неведомо, что в SVN его средствами это не делается вообще никак. Только какие-то сторонние утилиты, не имеющие к SVN никакого отношения и поэтому вообще непонятно какого качества. Потому что там это можно сделать только какой-то анусной фильтрацией бинарного дампа всей репы с последующим созданием новой репы из результатов этой фильтрации. Но, человеку, который считает "git stash" китайской магией подобное неведение вполне простительно :)

Мне кажется что на линейке истории SVN - тоже не самая древняя технология. Что там было? CVS и копирование
diff-файлов через почту. Тоесть вся эта байда возникала ситуативно как "дорогая ложка к обеду".

И когда финский парень создавал git он тоже наверное архитектурно не закладыал туда модификацию истории.
У него-то узкая задача была. Отвязаться от коммерческих систем и перейти на своё. Зато движение вперед
(fast-forward) быстро идет. Я думаю что если идти на компромиссы - то он что-то терял-бы. Видимо не хотел
терять. Характер такой скверный. Мудаковатый я-бы сказал. Типа будет так как я захотел...
...
Рейтинг: 0 / 0
Системы контроля версий и Delphi
    #40126347
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
mayton
Да как драть зубы через ж....
Можно было простой одной командой что-то сделать. И потом git push.

Автору просто неведомо, что в SVN его средствами это не делается вообще никак.
Потому что не нужно оно. Был файл в истории и был, сейчас нет - он на checkout/update и не скачивается. Лежит себе там на сервере в репозитории в какой-то древней версии и лежит.
...
Рейтинг: 0 / 0
81 сообщений из 81, показаны все 4 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Системы контроля версий и Delphi
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]