Wątek przeniesiony 2015-09-17 22:11 z Inżynieria oprogramowania przez dzek69.

Git - używanie URL zamiast nazwy repozytorium

0

Przykład:

git push origin master
git push https://github.com/example/repo.git master

Obie komendy działają, problem jest z tym:
git push https://github.com/example/repo.git another_repo/master:refs/heads/master
Zamiast nazwy "another_repo" chciałbym użyć URL-a. Czy da się to zrobić? Chodzi mi o to żeby ominąć konfigurację:
git remote add another_repo https://github.com/user/repo.git
i używać bezpośrednio URL-a przy wypychaniu zmian do repo.

0

Zastanawiam się nad motywacją takiego działania, ale nie jest to istotne na chwilę obecną. Generalnie da się to zrobić ponieważ another_repo jest tylko aliasem, który jest rozwiązywany przez mechanizm git-a do urla.

0

Napisałem sobie skrypt żeby zautomatyzować proces deployowania projektu na produkcję i chciałbym żeby przy wypychaniu zmian na produkcję trafiły one do właściwego repozytorium, a nie takiego który developer ma ustawiony w pliku konfiguracyjnym gita bo nie zawsze jest pewność że będzie miał właściwy adres do repozytorium.

Generalnie da się to zrobić ponieważ another_repo jest tylko aliasem, który jest rozwiązywany przez mechanizm git-a do urla.

Jak to zrobić?

0

nie da się.
Git reprezentuje branch przez wskaźnik na commit.
Są dwa rodzaje tych wskaźników: dla branch'a lokalnego i dla brancha zdalnego.
Branch zdalny pokazuje ostatni znany status zdalnego repozytorium.
Gdy posługujesz się url-em a nie nazwą remote-a, wszstko się odbywa anonimowo i git nie śledzi zmian repozytorium anonimowego.
Ergo nie masz brancha zdalnego, które rozpoczynałoby się url-em.

Do tego jeszcze wchodzi problem semantyki komend, gdzie dwukropek rozdziela który brancha zaktualizować innym branchem, oraz dwukropek ze oddzielający scheme (protokół) z urla.

A co do samego deploya czy na produkcji jest potrzebne całe repo? Nie prościej robić git archive i wysyłać konkretną wersję na produkcję?
Poza tym, zawsze można napisać tak skrypt, by wykrywał prawidłowy remote, albo by go dodawał tymczasowo.
Możliwości jest naprawdę wiele. Np serwer produkcyjny codziennie o o 2AM może sprawdzać główne repo w poszukiwaniu nowych tagów, albo aktualizacji branch-a i sam wykonywać aktualizację.

1 użytkowników online, w tym zalogowanych: 0, gości: 1