Переход на GitLab из GitHub (как удаленные в среде POSIX) - PullRequest
0 голосов
/ 06 июня 2018

Я перехожу на GitLab.Мне нужно отредактировать все файлы .git / config на моих рабочих станциях, которые содержат «github», и заменить это слово на «gitlab».Я подозреваю, что это проще всего сделать с помощью одной команды find, а не с помощью вызова git в каждой папке.

Я думаю, это будет что-то вроде:

find ./ -name ".git/config" -type f -exec sed -i 's/github/gitlab/gI' {} \;

Это безопасный / разумный подход?Каков наилучший способ сделать это?

Редактирование / обновление: Комментарий: Я на самом деле не хочу делать это для всех репозиториев github, так как движутся только те, которыми я управляю.Я не пересмотрел свой вопрос, но принятый ответ включает версию, предназначенную только для одной учетной записи на github.И мой собственный ответ, приведенный ниже, в буквальном смысле достигает цели изменения каждого файла.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Чтобы изменить только ссылки на репозитории в одном аккаунте (безопаснее) на github, используйте следующее (скажем, мое имя пользователя на github и gitlab cpbl):

find ./ -wholename "*/.git/config" -type f -exec sed -i 's/github.com:cpbl/gitlab.com:cpbl/gI' {} \;

find ./ -wholename "*/.git/config" -type f -exec sed -i 's/github.com\/cpbl/gitlab.com\/cpbl/gI' {} \;

Очевидно, вам следует заменить"cpbl" с вашим желаемым именем пользователя github / gitlab.Эти две строки необходимы, потому что в ваших файлах .git могут быть ссылки url = git@gitlab.com:cpbl/ и url = git@gitlab.com/cpbl/.

Прежде чем приступить к описанному выше, чтобы составить список изменений, которые вы собираетесь изменить, вы можете сделать следующее:

find ./ -wholename "*/.git/config" -type f -exec grep github.com:cpbl {} \;

find ./ -wholename "*/.git/config" -type f -exec grep github.com\/cpbl {} \;

Преимущество этого по сравнению с отличной идеей @ VonC заключается в том, что вы можете сделать исключение таким образом (например, есть один репо, который я не хочу перемещать сегодня, поэтому я могу просто изменить его обратно).

0 голосов
/ 06 июня 2018

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

git config --global url."https://gitlab.com/".insteadOf "https://github.com/"
git config --global url."git@gitlab.com:".insteadOf "git@github.com:"

Затем, любым git push/pull/clone с использованием URL github.comвместо этого будет использоваться gitlab.com.

В OP CPBL упоминается в комментариях :

, чтобы не изменять другие пакеты GitHubЯ использую, у меня работает следующее:

git config --global url."git@gitlab.com:cpbl".insteadOf "git@github.com:cpbl"
git config --global url."git@gitlab.com/cpbl".insteadOf "git@github.com/cpbl"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...