Re: Система контроля версий
От: Pzz Россия https://github.com/alexpevzner
Дата: 15.03.19 10:17
Оценка: 4 (1) +3
Здравствуйте, CEMb, Вы писали:

CEM>Хочется интегрировать себе сабж. Не знаю, с какого края начать

CEM>У кого-нибудь есть опыт интеграции svn/git к себе в софт?

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

Ну или как вариант, можно поискать git/svn в виде библиотеки. Вот git для C: https://libgit2.org/, вот git для Go: https://github.com/src-d/go-git, это первое что нашлось, наверное есть и другие. Не знаю уж, какого они качества, и не потеряют ли они совместимость с "настоящим" git'ом по мере его развития.
Re: Система контроля версий
От: · Великобритания  
Дата: 15.03.19 11:55
Оценка: 4 (1) +1
Здравствуйте, CEMb, Вы писали:

CEM>Хочется интегрировать себе сабж. Не знаю, с какого края начать

CEM>У кого-нибудь есть опыт интеграции svn/git к себе в софт?

CEM>Есть редактор кода.

CEM>Хочется, например, как в idea, историю посмотреть, посравнивать, и так далее.
Для git есть библиотеки, но они обычно отстают в развитии. Поэтому обычно интегрируются с "git.exe" (idea в том числе). Команды умеют флажок "--porcelain" который делают вывод тривиальным для парсинга.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: Система контроля версий
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.03.19 14:16
Оценка: +1
Здравствуйте, Vain, Вы писали:

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


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

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

Одна беда, когда на стороне репозитория накапливалось изменений, плагин зависал при попытке обновить мою рабочую копию, и на strace было видно, что он чего-то ждет от гитхаба, а гитхаб, соответственно, от него. Что удивительно, тот же самый плагин заработал, как часы, когда я настроил его ходить в гитхаб не через http, а через ssh (он умел и так и так). Почему один и тот же, примерно, протокол в осном случае работал а в другом — нет, остается загадкой природы.
Система контроля версий
От: CEMb  
Дата: 15.03.19 09:36
Оценка:
Привет всем

Хочется интегрировать себе сабж. Не знаю, с какого края начать
У кого-нибудь есть опыт интеграции svn/git к себе в софт?

Есть редактор кода.
Хочется, например, как в idea, историю посмотреть, посравнивать, и так далее.
Re[2]: Система контроля версий
От: SaZ  
Дата: 19.03.19 11:01
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>...Вот git для C: https://libgit2.org/...


С этой штукой надо стресс тесты делать для вашего случая. Когда-то давно интегрировал, были проблемы с большими (по количеству коммитов) репозиториями — очень медленно работало. Времени на профилировку не было, пошли по пути наименьшего сопротивления — дёргали консольный гит и парсили выхлоп. Если не ошибаюсь, SourceTree и TortoiseGit так же делают.
Re[2]: Система контроля версий
От: Vain Россия google.ru
Дата: 30.03.19 08:45
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну или как вариант, можно поискать git/svn в виде библиотеки. Вот git для C: https://libgit2.org/, вот git для Go: https://github.com/src-d/go-git, это первое что нашлось, наверное есть и другие. Не знаю уж, какого они качества, и не потеряют ли они совместимость с "настоящим" git'ом по мере его развития.

У этой штуки (безотносительно к git), даже в случае от самого производителя, есть и будут определённые проблемы, а именно, отставание по отношению к интерфейсу обычной командной строки.
Вот выходит новая версия утилиты в виде командной строки, просто подменяешь и используешь. С библиотекой же будет отставание, к примеру, из-за того, что релиз либы отдлельно от утилиты, или необходима правка и перекомпиляция и т.д.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: Система контроля версий
От: a7d3  
Дата: 30.03.19 16:19
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Vain, Вы писали:


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


Pzz>Ну с другой стороны, если в проекте много участников, сидящих на разных машинах, под разными операционными системами, у них неизбежно будут разные версии утилиты. Поэтому вряд ли кто-то в здравом уме будет закладываться на то, что самые свежие фичи у всех неприменно стоят, безотносительно того, используется ли "официальная" коммандлайновая утилита, или сторонняя библиотека. Лишь бы библиотека не слишком уж совсем отставала.


В проектах использующих git применяется конкретный work-flow, который редко меняется — эволюционирует крайне медленно в сравнении с появлением новых фичей в DVCS.
Т.е. проблема не актуальна даже для тех гопников с хипстерами, что построили своей процесс на git (вместо рассововерного и пригожего mercurial).
Re[4]: Система контроля версий
От: Vain Россия google.ru
Дата: 31.03.19 09:31
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну с другой стороны, если в проекте много участников, сидящих на разных машинах, под разными операционными системами, у них неизбежно будут разные версии утилиты. Поэтому вряд ли кто-то в здравом уме будет закладываться на то, что самые свежие фичи у всех неприменно стоят, безотносительно того, используется ли "официальная" коммандлайновая утилита, или сторонняя библиотека. Лишь бы библиотека не слишком уж совсем отставала.

Это плюс к командной строке.

Pzz>P.S. Я как-то участвовал в проекте, в котором исходники жили на гитхабе, в гите. Поскольку меня от гита тошнит, я использовал плагин к меркурию, позволяющий ему работать с гитовскими репозиториями, как с родными и вроде как горя не знал. Плагин как раз содержал в себе независимую реализацию гитовского "клиента", ну и плюс всякую фигню, которая переводила понятия между меркурием и гитом.

У меня был похожий случай с дженкенсом под свн, но там плагины другого рода, да ещё всё под жабой. Так вот не было последней версии, с утилитой командной строки это бы не было проблемой.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Отредактировано 31.03.2019 9:36 Vain . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.