Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Вопросы по Гит, после SVN

661  1 2 3 4 5 все
AlexNek патриот25.07.17 21:09
AlexNek
25.07.17 21:09 

Общими усилиями переходим на GIT. Репо с историей перетащить удалось, но всё в "плоском виде" ветки и тэги чисто в отдельных каталогах как и транк.

Как проще из всего этого сделать "нормальное дерево"?

Ну и вообще как вы работаете с Гитом?

На сервере нужно иметь обязательно "bare repo" - с этим уже накололись. А на клиенте как делаете?

Нужно чтобы структура каталогов осталась старой. Проблема в том что репо относительно много, а проекты должны иметь определенную структуру каталогов.

Поэтому делаем на клиенте тоже "bare repo" как клон с основного, а с него уже "рабочий бранч" куда нужно.

#1 
  JosefSchwejk постоялец25.07.17 23:09
NEW 25.07.17 23:09 
в ответ AlexNek 25.07.17 21:09

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


Что значит "на клиенте"?


#2 
AlexNek патриот25.07.17 23:33
AlexNek
NEW 25.07.17 23:33 
в ответ JosefSchwejk 25.07.17 23:09, Последний раз изменено 26.07.17 01:28 (AlexNek)
Что значит "на клиенте"?

ну тот кто к серверу цепляется, например комп разработчика.


Сегодня полдня убил на аналогичную задачу.

Только полдня? Маловато смущ. Сегодня весь день только Гитом и занимались

Что выяснил - о переносе каталогов заботится не нужно, главное больше ничего не менять. Тэги и бранчи прийдётся видимо отследить по "названиям" коммитов


Вот что понравилось

https://habrahabr.ru/post/106912/

https://habrahabr.ru/post/174467/

#3 
Simple Nothing is f*cked26.07.17 15:34
Simple
NEW 26.07.17 15:34 
в ответ AlexNek 25.07.17 21:09

Я стараюсь использовать rebase flow, потому что ненавижу спагетти при выводе git log --graph


#4 
Simple Nothing is f*cked26.07.17 15:35
Simple
NEW 26.07.17 15:35 
в ответ JosefSchwejk 25.07.17 23:09

Я думал, эти времена уже давно в прошлом.

#5 
Simple Nothing is f*cked26.07.17 15:40
Simple
NEW 26.07.17 15:40 
в ответ AlexNek 25.07.17 21:09
На сервере нужно иметь обязательно "bare repo" - с этим уже накололись. А на клиенте как делаете?Нужно чтобы структура каталогов осталась старой. Проблема в том что репо относительно много, а проекты должны иметь определенную структуру каталогов.Поэтому делаем на клиенте тоже "bare repo" как клон с основного, а с него уже "рабочий бранч" куда нужно.

Тоже не понимаю. На клиенте и сервере структура репо одинаковая. Клиент - это копия сервера.

Из практических советов:

- использовать хороший diff tool. Если есть Beyond Compare - очень хорошо. Я пользуюсь связкой WinMerge + P4Merge.

- настроить алиасы для комфортной работы в консоли. Мои ленивые коллеги до сих пор пишут git status вместо git st или git log --graph --online вместо git glo.

- использовать rebase before push

#6 
  JosefSchwejk постоялец26.07.17 19:06
NEW 26.07.17 19:06 
в ответ Simple 26.07.17 15:35

Не Вы один, коллега. Сам был, так сказать, крайне удивлён.

#7 
  JosefSchwejk постоялец26.07.17 19:08
NEW 26.07.17 19:08 
в ответ AlexNek 25.07.17 23:33

К серверу цепляется?

Нет, Вы просто клон удаленного делаете в любом удобном месте, хоть десяток. Нет никаких клиентов и прицепов.

#8 
AlexNek патриот26.07.17 21:31
AlexNek
NEW 26.07.17 21:31 
в ответ Simple 26.07.17 15:40
настроить алиасы для комфортной работы в консоли

Как это работа в консоли может быть комфортной? Для меня комфортна исключительно работа с мышкой.


А Beyond Compare уж фиг его знает сколько лет пользую. Проблема была как его студии скормить. Нигде нет настроек. Перепробовал несколько .gitconfig пока правильный не нашел.

Но удобство пользования всё равно гораздо хуже.

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

#9 
dymanoid знакомое лицо26.07.17 21:40
dymanoid
NEW 26.07.17 21:40 
в ответ Simple 26.07.17 15:40

Насчёт rebase можно сейчас холивар развести. Я против безусловного rebase.

#10 
  JosefSchwejk постоялец26.07.17 22:29
NEW 26.07.17 22:29 
в ответ dymanoid 26.07.17 21:40

Спор известен и давишен. Но кому вишня, а кому и крыжовник.


#11 
  JosefSchwejk постоялец26.07.17 22:30
NEW 26.07.17 22:30 
в ответ AlexNek 25.07.17 21:09

Вы по SSH рельсы прокладывали? Или?

#12 
AlexOtt местный житель26.07.17 22:48
AlexOtt
NEW 26.07.17 22:48 
в ответ AlexNek 25.07.17 21:09

Надо было импортировать через git svn - тогда бы ветки и бранчи были бы корректно замаплены. Если структура была стандартной, как trunk/branches/tags, то это просто ключ -

#13 
AlexOtt местный житель26.07.17 22:49
AlexOtt
NEW 26.07.17 22:49 
в ответ AlexNek 26.07.17 21:31

TortoiseGit для винды. Visual Studio должен работать из коробки

#14 
dymanoid знакомое лицо26.07.17 23:19
dymanoid
NEW 26.07.17 23:19 
в ответ AlexNek 26.07.17 21:31

GitExtensions ещё можно глянуть. Довольно неплохой GUI для винды.

#15 
AlexNek патриот26.07.17 23:25
AlexNek
NEW 26.07.17 23:25 
в ответ JosefSchwejk 26.07.17 19:08
К серверу цепляется?

Это я просто с сетями последнее время сижу...


Пока вот что выяснил - может еще кому "переходящему" пригодится.


Гит имеет два типа репозитория: "голый" (bare) и с рабочей копией. Отличия очень важные. Для того чтобы несколько человек могли коммитится в репозиторий он должен быть обязательно "голым".

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

Визуал студия может работать только с репозиториями у которых есть рабочая копия.

Различать эти случаи довольно просто:

- "голый" репозиторий имеет стандартную структуру каталогов, в котором вашего проекта никак не видно

- репозиторий с рабочей копией имеет папку ".git".

- рабочая копия без репозитория имеет файл ".git".


Гит не работает с файловой структурой как свн, поэтому перемещать файлы и каталоги можно без опаски. Хотя не рекомендуют перемещение и изменение одновременно.

Понятие "веток" и "тэгов" имеется также, хотя это просто метки к коммитам.

"Стандарт работы" следующий:

- создается "голый" репозиторий доступный для всех разработчиков.

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

- после клонирования определенная ветка может быть автоматом скопирована как рабочя копия.

- Все изменения делаются в рабочей копии. Изменения можно просмотреть и переместить все или некоторые в специальное временное хранилище - staging area

- Изменения из staging area можно сохранить в локальной копии репозитория.

- Изменения из локального репозитория нужно переслать в общий репозиторий.

- Изменения из общего репозитория можно стащить в локальный.


#16 
AlexNek патриот26.07.17 23:27
AlexNek
NEW 26.07.17 23:27 
в ответ JosefSchwejk 26.07.17 22:30
Вы по SSH рельсы прокладывали? Или?

не, пока просто папочки на обычном файловом сервере. С Гит сервером пока проблемы.

#17 
AlexNek патриот26.07.17 23:31
AlexNek
NEW 26.07.17 23:31 
в ответ AlexOtt 26.07.17 22:48
Надо было импортировать через git svn

Вроде так народ и делал, но получилась одна мастер ветка с полной структурой каталогов "trunk/branches/tags"

Одну ветку "вынес", но не получилось туда перенести все коммиты из этой ветки.

#18 
AlexNek патриот26.07.17 23:36
AlexNek
NEW 26.07.17 23:36 
в ответ AlexOtt 26.07.17 22:49
TortoiseGit для винды. Visual Studio должен работать из коробки

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

Студия да, работает из коробки, но по сравнению с "анком" намного фиговей и не поддерживает рабочие копии вне репозитория.

А я было уж обрадовался, что не надо будет "лишнего" в проектах держать.

#19 
  JosefSchwejk постоялец27.07.17 08:37
NEW 27.07.17 08:37 
в ответ AlexNek 26.07.17 23:36

#20 
Simple Nothing is f*cked27.07.17 09:07
Simple
NEW 27.07.17 09:07 
в ответ dymanoid 26.07.17 21:40

Я тоже не догматик :) Например, feature branches можно и мержить. Но rebase before push - обязательно на мой взгляд.

#21 
Simple Nothing is f*cked27.07.17 09:09
Simple
NEW 27.07.17 09:09 
в ответ AlexNek 26.07.17 21:31
Как это работа в консоли может быть комфортной? Для меня комфортна исключительно работа с мышкой.

Ты просто не познал дзен. Git - это не svn.

Некоторые вещи удобнее в консоли, некоторые в гуе. Например, я обычно коммичу в IDE, а все остальное делаю в консоли. По моему опыту намного меньше косяков.

#22 
Simple Nothing is f*cked27.07.17 09:10
Simple
NEW 27.07.17 09:10 
в ответ AlexNek 26.07.17 23:25

Господи, какой геморрой. Поставь уже себе нормальный сервер типа Bitbucket и забудь этот кошмар.

#23 
MrSanders старожил27.07.17 11:13
NEW 27.07.17 11:13 
в ответ Simple 27.07.17 09:09

+1. Консоль для гита самое то. В гуях я историю смотрю и cherry-pick в том же SourceTree быстрее получается. Я и коммичу в консоли. А то вечно весь этот гуй себя умнее считает и "помогает". А ты потом сидишь и голову чешешь - как же так получилось, я просто изменения коммитил...

#24 
Simple Nothing is f*cked27.07.17 11:25
Simple
NEW 27.07.17 11:25 
в ответ MrSanders 27.07.17 11:13

Справедливости ради в идее интеграция сделана очень хорошо. Но консоль все равно лучше :)

#25 
AlexOtt местный житель27.07.17 20:40
AlexOtt
NEW 27.07.17 20:40 
в ответ Simple 27.07.17 09:10

Или Gitlab...

#26 
Simple Nothing is f*cked27.07.17 21:37
Simple
NEW 27.07.17 21:37 
в ответ AlexOtt 27.07.17 20:40

Этот еще и бесплатный вроде.

#27 
  moose свой человек27.07.17 21:58
NEW 27.07.17 21:58 
в ответ Simple 27.07.17 11:25

Мне пока консоли достаточно. Единственное, где недостает чего другого - это diff понагляднее увидеть: чего ушло, чего пришло.

#28 
Simple Nothing is f*cked27.07.17 22:00
Simple
NEW 27.07.17 22:00 
в ответ moose 27.07.17 21:58

WinMerge для диффа и p4merge для 3 way merge.

Tool для 3 way merge - в обязательном порядке.

#29 
AlexNek патриот28.07.17 00:03
AlexNek
NEW 28.07.17 00:03 
в ответ Simple 27.07.17 09:09
Некоторые вещи удобнее в консоли

ненавижу консоль еще с детского садика. Первое что делаю в никсах - устанавливаю мс.

Зачем чего-то печать когда можно просто нажать кнопу...

Хотя был когда-то коллега который всё делал только в консоли и пользовал 20 символьные пароли.

Как то он заболел, так фиг знает сколько мучались пока пароль правильно ввели.

#30 
AlexNek патриот28.07.17 00:06
AlexNek
NEW 28.07.17 00:06 
в ответ Simple 27.07.17 09:10
Поставь уже себе нормальный сервер типа Bitbucket и забудь этот кошмар

Какой именно кошмар? И что даст сервер?

Базовые концепты то не изменятся.

#31 
AlexNek патриот28.07.17 00:09
AlexNek
NEW 28.07.17 00:09 
в ответ MrSanders 27.07.17 11:13
cherry-pick

А что он делает, что -то пока еще понял.

Хотел вот парочку коммитов с мастера в другую ветку перетащить - не получилось.

#32 
AlexNek патриот28.07.17 00:18
AlexNek
NEW 28.07.17 00:18 
в ответ Simple 26.07.17 15:40
Клиент - это копия сервера.

Позволю не согласится.

Во первых, на сервере не может быть рабочей копии.

Во вторых, забрать можно не всё.

#33 
  JosefSchwejk постоялец28.07.17 06:20
NEW 28.07.17 06:20 
в ответ AlexNek 28.07.17 00:06

А как Вы без сервера хотите все настраивать и запускать? Он нужен в том или ином виде.

#34 
Simple Nothing is f*cked28.07.17 09:29
Simple
NEW 28.07.17 09:29 
в ответ AlexNek 28.07.17 00:03

А что ты будешь устанавливать, если это продуктивный сервер, и у тебя нет прав? ;)

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

#35 
Simple Nothing is f*cked28.07.17 09:32
Simple
NEW 28.07.17 09:32 
в ответ AlexNek 28.07.17 00:18

Ты точно о Git? По-моему, ты еще не понял, что локальная копия репозитория - это полная копия репозитория на сервере. Естественно, никакой рабочей копии на сервере нет, она там не нужна.

#36 
MrSanders старожил28.07.17 10:31
NEW 28.07.17 10:31 
в ответ JosefSchwejk 28.07.17 06:20
А как Вы без сервера хотите все настраивать и запускать? Он нужен в том или ином виде.

Для git-а? Нет, специальный сервер для git-а не нужен. Сервер удобнее, тот же Bitbucket или gitlab помогают с code review, например, но и без них можно работать. Хоть на самбовской шаре центральный репозиторий клади.

#37 
MrSanders старожил28.07.17 10:34
NEW 28.07.17 10:34 
в ответ AlexNek 28.07.17 00:09
А что он делает, что -то пока еще понял.

"Копирует" коммит. Создает новый коммит, который выполняет такие же изсенения как и "копируемый".

Хотел вот парочку коммитов с мастера в другую ветку перетащить - не получилось.

А что значит "перетащить"? Убрать из мастера и создать в ветке или скопировать в ветку?

#38 
AlexNek патриот28.07.17 19:04
AlexNek
NEW 28.07.17 19:04 
в ответ JosefSchwejk 28.07.17 06:20
А как Вы без сервера хотите все настраивать и запускать?

Создаем "голый" репо в любом доступном для всех месте. Где проблемы для локальной сетки?

#39 
AlexNek патриот28.07.17 19:08
AlexNek
NEW 28.07.17 19:08 
в ответ Simple 28.07.17 09:29
А что ты будешь устанавливать, если это продуктивный сервер, и у тебя нет прав?

Если я должен что то устанавливать, то должны дать права...


а консоль в данном случае имеет смысл

А что я не смогу сделать без консоли? Всё есть или в апи или в "эмуляторе консоли"

#40 
AlexNek патриот28.07.17 19:15
AlexNek
NEW 28.07.17 19:15 
в ответ Simple 28.07.17 09:32
По-моему, ты еще не понял, что локальная копия репозитория - это полная копия репозитория на сервере.

Может тогда обьясните принцип работы данного ключика?

Use the --depth option in git clone:

Create a shallow clone with a history truncated to the specified number of commits.

Ну и вариант, когда коллега залил баальшую ветку которая мне нафиг не нужна. Почему у меня стоит значёк , что информация доступна только на сервере?


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

#41 
AlexNek патриот28.07.17 19:19
AlexNek
NEW 28.07.17 19:19 
в ответ MrSanders 28.07.17 10:34
Создает новый коммит, который выполняет такие же изсенения как и "копируемый".

где именно? В какой ветке?


-->Убрать из мастера и создать в ветке

СВН-вская копия получилась без веток в коммитах, просто идет одна длинная кишка, хотя по файлам видно что изменения исключительно в ветке, да и ветка моя, так именно и делал.

#42 
  JosefSchwejk постоялец28.07.17 21:14
NEW 28.07.17 21:14 
в ответ MrSanders 28.07.17 10:31

Вообще-то, что Bitbucket, что Github уже в своем роде сервера, которые позволяют делать всевозможные танцы с бубном. Можно на стороне сервера (не git, просто машина в сети) установить тот же Bonobo или другой возможный аналог. И уже с ним устраивать светопреставления, Элисы и Бобы, приватные и публичные ключи.


Плюс по всему что Bitbucket, что Github для продакшн-кода так просто и использовать грешно. Да и корпоративный Bitbucket, например, тоже не в каждом случае можно использовать и не в каждом проекте.

#43 
  JosefSchwejk постоялец28.07.17 21:17
NEW 28.07.17 21:17 
в ответ AlexNek 28.07.17 19:04

Никаких проблем. Только это не сервер, а обычный удаленный репозиторий получится. Не более. Для полноценного сервера нужен демон на той стороне. Что-то Вы не туда копаете который день :-) А меня упрекали в сроках!

#44 
AlexNek патриот28.07.17 21:27
AlexNek
NEW 28.07.17 21:27 
в ответ JosefSchwejk 28.07.17 21:17
Что-то Вы не туда копаете который день

Стояла задача получить что то рабочее на этой неделе, а не пользовать исключительно сервер.

#45 
  JosefSchwejk постоялец28.07.17 21:39
NEW 28.07.17 21:39 
в ответ AlexNek 28.07.17 21:27

Ну так это делается одной командой git init -bare. Чего там курить неделю. С настройками демона, да, можно на пару дней зависнуть. Кстати, я Вам давал давеча ссылку - посмотрите видео, рекомендую.

#46 
Simple Nothing is f*cked28.07.17 22:02
Simple
NEW 28.07.17 22:02 
в ответ AlexNek 28.07.17 19:15

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

#47 
Simple Nothing is f*cked28.07.17 22:04
Simple
NEW 28.07.17 22:04 
в ответ JosefSchwejk 28.07.17 21:14
Плюс по всему что Bitbucket, что Github для продакшн-кода так просто и использовать грешно.

Вы имеете в виду github.com? Мы упоминали GitLab, а не GitHub.

У нас стоит на локальном сервере полный стэк Atlassian, и мы туда все наши проекты пихаем. Какие причины их не использовать?

#48 
MrSanders старожил28.07.17 22:46
NEW 28.07.17 22:46 
в ответ AlexNek 28.07.17 19:15
Use the --depth option in git clone

Ну, давайте я поясню. Если выстрелить себе в ногу, не надо удивляться что ходить неудобно :)

depth "обрезает" историю. При depth 1 копируется текущее состояние master-а и всё. Никакой информации (вот тут не уверен на 100%, может информация "был коммит с комментарием" и будет, но не будет данных о состоянии проекта в этом коммите) о предыдущих коммитах. Работать с таким - вредительство. Используется в основном для автоматических сборок. Им история не нужна.

Ну и вариант, когда коллега залил баальшую ветку которая мне нафиг не нужна. Почему у меня стоит значёк , что информация доступна только на сервере?

А тут ответ сложнее.

1. Когда мы делаем git clone (без ограничения глубины!) мы копируем всё. (за исключением некоторых настроек, см. --mirror) Но. Локальные ветки не создаются.
Например. На сервере есть master и development после git clone делаем git branch и видим... Только *master. Но стоит сделать git branch -r как мы увидим и origin/master и origin/development.

Если хочется работать с другой веткой просто делаем git checkout development. Это создасть локальную ветку development, которая будет ссылаться на origin/development. Никакие данные при выполнении этой команды с сервера не копируются. Они уже у нас.

Если вы сделали git clone и после этого "стоит значёк , что информация доступна только на сервере" выбросьте нафиг этот гуй. Он тупой.

2. Склонировали репо и работали с ним какое-то время. Коллега заливает на центральную репо свою ветку. Локально у нас про нее нет никакой информации. Мы даже не знаем что она существует. Можно или сделать git fetch (забрать всю новую инфу с сервера, со всеми коммитами, новыми файлами и те пе, может длиться) или можем посмотреть а что там есть на сервере с помощью git ls-remote

Если в этом случае ваш гуй показывает "значёк , что информация доступна только на сервере", то он всё делает правильно. Посмотрел на удаленке и показал, но сам пока что ничего не скачивал.

Создает новый коммит, который выполняет такие же изсенения как и "копируемый".
где именно? В какой ветке?

В текущей.

СВН-вская копия получилась без веток в коммитах, просто идет одна длинная кишка, хотя по файлам видно что изменения исключительно в ветке, да и ветка моя, так именно и делал.

Тут или хреново сконвертировали (git-svn хорошо понимает свн-овские ветки) или есть недопонимание. Если параллельной разработки никогда не было (сделали ветку, поработали в ветке, потом замержили ветку назад в транк, при этом в самом транке никаких новых коммитов не было) то гитовский лог будет выглядеть как линия.
Может так понятнее... Если в svn было

trunk: A - B  -  -  -  F
            \         /
branch:      C - D - E


То в графе коммитов в гите вы увидите A- B - C - D - E - F

Но ветка "branch" будет на месте. Ее HEAD будет показывать на E (а master на F). Хотя не уверен, будет ли F присутствовать. Он в принципе не нужен...


А что говорит git branch -a?

#49 
MrSanders старожил28.07.17 22:49
NEW 28.07.17 22:49 
в ответ JosefSchwejk 28.07.17 21:14
Вообще-то, что Bitbucket, что Github уже в своем роде сервера, которые позволяют делать всевозможные танцы с бубном.

И? Я говорю что можно работать без них.

Плюс по всему что Bitbucket, что Github для продакшн-кода так просто и использовать грешно.

Почему?

Да и корпоративный Bitbucket, например, тоже не в каждом случае можно использовать и не в каждом проекте.

А конкретнее можно? Пример проекта, который нельзя хранить в битбакете не опишите?

#50 
MrSanders старожил28.07.17 22:50
NEW 28.07.17 22:50 
в ответ Simple 28.07.17 22:04

GitHub тоже можно купить. Но геморройно. И дорого. И нафиг надо.

#51 
AlexNek патриот28.07.17 23:26
AlexNek
NEW 28.07.17 23:26 
в ответ JosefSchwejk 28.07.17 21:39
Ну так это делается одной командой git init -bare.

Это создается пустой репо.

А в задаче требоваловась пользовать готовые проекты из SVN в Гите.

#52 
AlexNek патриот28.07.17 23:40
AlexNek
NEW 28.07.17 23:40 
в ответ MrSanders 28.07.17 22:46
Работать с таким - вредительство.

Я не говорю, что надо работать. Речь вроде шла, что локальная копия всегда полностью идентична удаленной.

Про всё остальное - не исследовал и в ближайшее время уже не получится.


Если в этом случае ваш гуй показывает "значёк , что информация доступна только на сервере", то он всё делает правильно. Посмотрел на удаленке и показал, но сам пока что ничего не скачивал.

именно этот вариант и имел в виду.


git-svn хорошо понимает свн-овские ветки

не уверен, похоже он знает только одну версию svn


А что говорит git branch -a?

не имею никакого понятия, так как командами не пользуюсь, но все новые ветки (гитовские) и тэги видны, а старые нет.

#53 
AlexNek патриот28.07.17 23:43
AlexNek
NEW 28.07.17 23:43 
в ответ MrSanders 28.07.17 22:49
Пример проекта, который нельзя хранить в....

Концепция начальства следующая - никаких исходников на сторонних серверах.

#54 
  JosefSchwejk постоялец29.07.17 08:54
NEW 29.07.17 08:54 
в ответ MrSanders 28.07.17 22:49

Ну, например мой текущий проект подпадает под определенный уровень секретности, и по внутренней полиси использовать его даже на корпоративном Bitbucket нельзя. Потому что формально это уже не нами управляемый удаленный сервер.


#55 
Simple Nothing is f*cked29.07.17 09:44
Simple
NEW 29.07.17 09:44 
в ответ AlexNek 28.07.17 23:43

Имеется в виду установленный у себя на сервере Bitbucket, а не bitbucket.com.

#56 
MrSanders старожил29.07.17 10:18
NEW 29.07.17 10:18 
в ответ AlexNek 28.07.17 23:40
Я не говорю, что надо работать. Речь вроде шла, что локальная копия всегда полностью идентична удаленной.

Ну, тут, похоже недопонимание. После обычного clone (т.е. в 99% случаев) локальная репо содержит те же объекты что и удаленная. Кроме depth есть и другие параметры, ограничивающие что мы копируем. Но всё это очень редко используется. А, да, есть еще LFS... Ну и изменения в удаленной репо не попадают на наш локальный компьютер "автоматически". Их надо сначала скачать.

Ну и именно этот вариант и имел в виду.

Тогда все хорошо. При следующем fetch-е все данные окажутся в локальной репо.

не уверен, похоже он знает только одну версию svn

Можете быть уверены. Последний раз мы свн в гит недели две назад перетаскивали.

не имею никакого понятия, так как командами не пользуюсь,

А зря. Что там вам ваш гуй показывает я не знаю. Да, если вы командами не пользуетесь, как же вы svn мигрировали?

#57 
AlexNek патриот29.07.17 10:20
AlexNek
NEW 29.07.17 10:20 
в ответ Simple 29.07.17 09:44
Имеется в виду установленный у себя на сервере Bitbucket

А какой смысл платить 1800 долларов за сервер?

#58 
MrSanders старожил29.07.17 10:21
NEW 29.07.17 10:21 
в ответ AlexNek 28.07.17 23:43, Последний раз изменено 29.07.17 10:24 (MrSanders)

Мнэ... А что вы называете "сторонним сервером"? Если я на своем рабочем компе установлю битбакет, он сторонний сервер или нет?

А какой смысл платить 1800 долларов за сервер?

Ну, лицензия на 10 пользователей стоит 10 долларов. Есть бесплатный гитлаб.

А смысл... Наверное, чтобы соответсвовать

Концепция начальства следующая - никаких исходников на сторонних серверах.
#59 
MrSanders старожил29.07.17 10:26
NEW 29.07.17 10:26 
в ответ JosefSchwejk 29.07.17 08:54

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

#60 
AlexNek патриот29.07.17 10:56
AlexNek
NEW 29.07.17 10:56 
в ответ MrSanders 29.07.17 10:18
Последний раз мы свн в гит недели две назад перетаскивали

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


А зря. Что там вам ваш гуй показывает я не знаю.

А зачем мне распечатывать все команды, потом их искать - когда всё есть в диалогах и меню.

Я не перетаскивал, но ради интереса попробовал команда не работает.

Эту фигню тоже пробовал http://www.syntevo.com/smartgit/, если бы сразу написали Ява, даже бы и не пробовал. "Голое" репо и то не умеет показывать.

#61 
AlexNek патриот29.07.17 11:01
AlexNek
NEW 29.07.17 11:01 
в ответ MrSanders 29.07.17 10:21
А что вы называете "сторонним сервером"?

Сорри, думал понятно из контекста, что речь идет об простом файл сервере.


Ну, лицензия на 10 пользователей стоит 10 долларов

Подозреваю, что там просто нет текста с "маленькими буквочками", ни разу не видем коммерческого софта за 10 долларов.


Наверное, чтобы соответсвовать

А чем фигова просто "файловая версия"?

#62 
  JosefSchwejk постоялец29.07.17 12:06
NEW 29.07.17 12:06 
в ответ MrSanders 29.07.17 10:26

Ну так вот на этом и остановились - нужен демон для этого. Настроить же демона - дело дня, двух. Проблема в том, что у нас в SW Pool нет ни одного демона. Мало того, запретили к использованию старый клиент, а насчёт нового молчат. Тут впору вспоминать поговорку, что если бы в аду была бюрократия, она бы была немецкой - на Украине у нас, конечно, тоже было куча проблем при настройке инфраструктуры, но можно и реально было Белых Эльфов уговорить на покупку и демонов, и JIRA, и прочих плюшек. Да, Эльфы долго раскачивались, жались, но понимали, что это все нужно. Здесь же даже до Эльфов не добраться в силу немецкого ретроградства и огромных размеров концерна. Концов нет.

#63 
MrSanders старожил29.07.17 12:24
NEW 29.07.17 12:24 
в ответ AlexNek 29.07.17 10:56
с какой версии СВН?

А вот это не скажу, смотреть надо. Если это сервер еще полностью не отключили... Могу только сказать что первый раз я перетаскивал свн в гит в 2009-м, не помню чтобы у нас там были проблемы с ветками... С тэгами были, да.

А зачем мне распечатывать все команды, потом их искать - когда всё есть в диалогах и меню.

По той простой причине что про команды есть четкое и достаточно точное описание. А что делает каждый гуй когда нажмешь на кнопочку "коммит" обычно описано как "коммитит изменения" а в реальности от "коммитит и пушит" до "сам добавляет все что посчитал нужным в коммит, коммитит, мержит в develop потому что увидел такую ветку и решил что бы используем git flow, добавляет тэг, но делает это через такую жопу что на сервере не срабатывают hook-и", зато со свистелками и перделками.

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

Я не перетаскивал, но ради интереса попробовал команда не работает.

Угу. Осталось угадать какая команда и что именно не работает.

git svn clone http://svn/repo/here/trunk

?
Из гуев могу только посоветовать SourceTree. С ним у меня было меньше всего проблем.

Подозреваю, что там просто нет текста с "маленькими буквочками", ни разу не видем коммерческого софта за 10 долларов.

Посмотрите, увидите. Мы им пользуемся именно с 10-ю лицензиями. Внутри нашего отдела. Проблема что сразу начинает хотеться больше пользователей. Доступ разграничивать. А на 50 уже дорого.

А чем фигова просто "файловая версия"?

Ей вполне можно пользоваться. Я сталкивался с проблемами с параллельным доступом и иногда появляются ашипки если файлы на виндусевской самбе, а клиент - линукс. Или мак. Потому что в 2017 году пользоваться файловой системой не различающей реестр может только микроштоф. Самба тормозит. После перехода не сервер первое время вопросы были, мол, я запушил а он ничё не делает. - В смысле не делает? - Ну, я кнопку нажал и всё. Раньше ждал несколько секунд.

Лучше уж доступ по ссх организовать.


Сервер дает дополнительные плюшки. От возможности браузить репо на сервере до разделения доступа к веткам. Поддержка code review с помощью pull request-ов. По емылу оповещает о новых коммитах, если надо. Автоматизация на сервере. Запушил коммит, сервер добавил тэг с временем, увеличил номер багфикса, если это интеграционная ветка оповестил интегратора и пнул CI сервер, чтобы он сборку начинал и те пе. У битбакета хорошая интеграция с jira. Бэкапы настраиваются. В общем без всего этого можно жить. Дополнительное удобство. Ну и я не знаю как поведет себя гит с "файловой версией" если с репо будет человек 15-20 работать. Одновременно что-то начнут пушить... Кто-то победит (кто первый встал, того и тапки), кто-то в конце операции ошибку схлопочет, мол, не могу поменять референс. Из личного опыта: с 5-ю разработчиками нормально и с файловой версией.

#64 
AlexNek патриот29.07.17 12:50
AlexNek
NEW 29.07.17 12:50 
в ответ MrSanders 29.07.17 12:24, Последний раз изменено 29.07.17 14:40 (AlexNek)

вот только что попробовал

$ git svn clone --stdlayout E:\SVN-repo\svn-repo-test E:\Git-Repos\svn-repo-test-git

Initialized empty Git repository in E:/Git-Repos/MPG200_CustomApps/EGit-Repossvn-repo-test-git/.git/

E: 'trunk' is not a complete URL and a separate URL is not specified

----

$ git svn clone E:\SVN-repo\svn-repo-test E:\Git-Repos\svn-repo-test-git

Bad URL passed to RA layer: Illegal repository URL 'E:SVN-reposvn-repo-test' at /mingw64/share/perl5/site_perl/Git/SVN.pm line 148.


PS: "файловые" репо не поддерживаютсяю Из сервера вроде работает, только у меня нет большого проекта для тест...

Перенёс домашний репо, но тоже полный бардак.

Я просто работал с отдельными проектами в одном репо, когда надо было брал нужный или добавлял. Теперь всё в куче. Как разделить?

#65 
AlexNek патриот29.07.17 12:58
AlexNek
NEW 29.07.17 12:58 
в ответ MrSanders 29.07.17 12:24, Последний раз изменено 29.07.17 12:58 (AlexNek)
Посмотрите, увидите.

За 10 я могу и сам купить. Только Ява отпугивает. Сколько не пробовал продуктов на Яве - не было ни одного нормального.

Но если что, то только в октябре что то получится попробовать...

#66 
AlexNek патриот29.07.17 13:34
AlexNek
NEW 29.07.17 13:34 
в ответ MrSanders 29.07.17 12:24

Дома давно пробовал ентот, но для него 17 студия нужнаб остальные SSH не поддерживают

https://www.synology.com/en-us/knowledgebase/DSM/help/Git/...

#67 
  JosefSchwejk постоялец29.07.17 13:50
NEW 29.07.17 13:50 
в ответ MrSanders 29.07.17 12:24
Из гуев могу только посоветовать SourceTree. С ним у меня было меньше всего проблем.

Поддерживаю, хорошая вещь. Вот ее нам как раз давеча зарубили. Также порекомендую TortoiseGit - в прошлой жизни на нем работали.


#68 
Simple Nothing is f*cked29.07.17 19:00
Simple
NEW 29.07.17 19:00 
в ответ AlexNek 29.07.17 12:58
Сколько не пробовал продуктов на Яве - не было ни одного нормального.

хаха

Видел суслика? А он есть (с)

IntelliJ IDEA видел когда-нить? После нее студия покажется ужасным кошмаром.

Конкретно атлассианский стек - очень хорош. Дело не в жабе, дело в тех, кто продукт делают.


#69 
Simple Nothing is f*cked29.07.17 19:02
Simple
NEW 29.07.17 19:02 
в ответ MrSanders 29.07.17 12:24

> В общем без всего этого можно жить.

Кодить тоже можно в нотпаде, чо уж там.

#70 
AlexNek патриот29.07.17 21:49
AlexNek
NEW 29.07.17 21:49 
в ответ JosefSchwejk 29.07.17 13:50
Также порекомендую TortoiseGit

По сравнению с Git Extension довольно далеко

#71 
  JosefSchwejk постоялец29.07.17 21:51
NEW 29.07.17 21:51 
в ответ AlexNek 29.07.17 21:49

Хм, Вы ведь всего лишь неделю сам Git курите. Поэтому зря, ой зря так самоуверенно.

#72 
AlexNek патриот29.07.17 21:53
AlexNek
NEW 29.07.17 21:53 
в ответ Simple 29.07.17 19:00
Дело не в жабе, дело в тех, кто продукт делают

Да это вроде и понятно. Но это у меня как бы "народная примета". Каждый раз надеешься на лучшее, но как вижу специфические окошки почти сразу обнаруживается нечно, что не позволяет пользовать продукт дальше.

#73 
MrSanders старожил29.07.17 22:25
NEW 29.07.17 22:25 
в ответ Simple 29.07.17 19:02
Кодить тоже можно в нотпаде, чо уж там.

Нельзя. Не по феншую. Только vi, только хардкор. Хотя через пару недель в vim-е опять же все становится раз в 10 проще и быстрее чем в ноутпаде, засада :)

#74 
Simple Nothing is f*cked29.07.17 22:26
Simple
NEW 29.07.17 22:26 
в ответ MrSanders 29.07.17 22:25

У клиента оракл на аих. Вима нет, есть только голый ви :( Пичаль.

#75 
Simple Nothing is f*cked29.07.17 22:28
Simple
NEW 29.07.17 22:28 
в ответ AlexNek 29.07.17 21:53

Так жаба на клиенте - это не жаба на сервере, которая дефакто стандарт энтерпрайз систем. Ну и опять же - идеа :)

#76 
AlexNek патриот29.07.17 22:30
AlexNek
NEW 29.07.17 22:30 
в ответ Simple 29.07.17 19:00
IntelliJ IDEA

Может и видел, но не упомню. Jetbrains уже и так давно польую

Сейчас глянул демо видео ничего необычного не заметил.

#77 
AlexNek патриот29.07.17 22:34
AlexNek
NEW 29.07.17 22:34 
в ответ JosefSchwejk 29.07.17 21:51
Поэтому зря, ой зря так самоуверенно.

Глянуло одно, глянул другоею Концепт то совершенно разный

#78 
MrSanders старожил29.07.17 22:42
NEW 29.07.17 22:42 
в ответ AlexNek 29.07.17 12:50
Я просто работал с отдельными проектами в одном репо, когда надо было брал нужный или добавлял. Теперь всё в куче. Как разделить?

Я раньше все сваливал к кастрюлю и варил борщ. Хотелось мяса, достал кусок, хотелось капусты, выловил немножко :)


Разделить в смысле сделать чтобы каждый проект в своей репо был? Простой ответ - с историей никак. Сложный ответ.. С filter-branch и --subdirectory вроде можно. В реальной жизни не пробовал пока что.
Вроде бы тут достаточно понятно описано.


PS: "файловые" репо не поддерживаютсяю Из сервера вроде работает, только у меня нет большого проекта для тест...

Точно-точно? А если поRTFM-ить немного и написать не выньдуфскую дорожку а URI? Вроде file:////E:/SVN-repo/svn-repo-test ?

#79 
Simple Nothing is f*cked29.07.17 22:42
Simple
NEW 29.07.17 22:42 
в ответ AlexNek 29.07.17 22:30

Идеа и студия - как мерседес и запорожец.

#80 
  JosefSchwejk постоялец29.07.17 22:51
NEW 29.07.17 22:51 
в ответ AlexNek 29.07.17 22:34

Great Wall тоже с виду прекрасен. Но это такое, кому изюм, кому курага.


#81 
AlexNek патриот29.07.17 23:43
AlexNek
NEW 29.07.17 23:43 
в ответ MrSanders 29.07.17 22:42
Разделить в смысле сделать чтобы каждый проект в своей репо был?

Как точно не знаю, но это чисто для дома. Пользователь 1, бранчей, тэгов и релизов не было. Стоит сервер SVN под никсами, там одно репо и в нём все проекты.

Пока вижу два пути: 1 проект - 1 репо, 1 репо х бранчей.

#82 
AlexNek патриот29.07.17 23:54
AlexNek
NEW 29.07.17 23:54 
в ответ Simple 29.07.17 22:42
Идеа и студия - как мерседес и запорожец

примеры из практики мона? Только студия у меня с решарпером, не имею представления как "голая" студия фунциклирует.

#83 
MrSanders старожил30.07.17 13:20
NEW 30.07.17 13:20 
в ответ AlexNek 29.07.17 23:43
Пока вижу два пути: 1 проект - 1 репо, 1 репо х бранчей.

Не-не, каждый проект в отдельную ветку не надо. Не для того они придуманы.

Если пользователь (разработчик) один, то можно и все проекты в одной репо держать.

Тут дело в том, что когда проектов много то и разработчиков много. И постоянно валятся новые коммиты, ветки, мержаться в мастер и те пе. Слишком много изменений - начинаешь путаться. Плюс со временем репо растет и одно дело клонировать 100 мегов, а другое ждать пока скачаются 3-4-5 гигов. Для меня есть еще один важный плюс: разделение проектов по разным репозиториям заставляет разработчиков думать над интерфейсами а не свинячить лишь бы побыстрее.

#84 
  JosefSchwejk постоялец30.07.17 15:15
NEW 30.07.17 15:15 
в ответ MrSanders 30.07.17 13:20

Коллега, а можете прояснить именно в части трехстороннего слияния? Каким образом оно работает с тремя коммитами, какой берется за основу, почему именно он и какой вклад остальных в результирующий?

#85 
MrSanders старожил30.07.17 16:28
NEW 30.07.17 16:28 
в ответ JosefSchwejk 30.07.17 15:15

Чтобы не писать много, давайте так: в викпедии описание 3-way merge достаточно простое и понятное. Вопрос как git находит наилучшего общего предка описан в документации git merge-base.

Если что не понятно будет - спрашивайте, если знаю - поясню.

#86 
  JosefSchwejk постоялец30.07.17 20:01
NEW 30.07.17 20:01 
в ответ MrSanders 30.07.17 16:28

Спасибо! Покурю завтра на работе.

#87 
Simple Nothing is f*cked31.07.17 13:37
Simple
NEW 31.07.17 13:37 
в ответ JosefSchwejk 30.07.17 20:01

Кстати, для любителей rebase очень рекомендую rerere.

#88 
AlexOtt местный житель31.07.17 21:03
AlexOtt
NEW 31.07.17 21:03 
в ответ AlexNek 29.07.17 23:43

Репозиторий распилить на пачку отдельных проектов с помощью git filter-branch: https://manishearth.github.io/blog/2017/03/05/understandin...

#89 
MrSanders старожил03.08.17 18:15
NEW 03.08.17 18:15 
в ответ AlexNek 29.07.17 10:56
с какой версии СВН? Стараемся без нужды не обновлять, а то иногда получаются "приятные сюрпризы".

Посмотрел, наконец, версию SVN сервера нашего: Apache Subversion version 1.7.8

#90 
1 2 3 4 5 все