Mam komunikat o błędzie podczas tworzenia znacznik zawierający [
charakter:Jakie nazwy są poprawnymi tagami git?
śmiertelny: „[” nie jest poprawną nazwą znacznika.
Pytanie: czy są jakieś reguły dla tagów w git?
Mam komunikat o błędzie podczas tworzenia znacznik zawierający [
charakter:Jakie nazwy są poprawnymi tagami git?
śmiertelny: „[” nie jest poprawną nazwą znacznika.
Pytanie: czy są jakieś reguły dla tagów w git?
Można sprawdzić, czy nazwa jest ważna z
git check-ref-format
Ten page zawiera ograniczenia dotyczące prawidłowej nazwy. Cytowane od strony (ewentualnie przestarzałe w przyszłości):
Mogą to ukośnik
/
hierarchicznej (katalog) grupy, ale bez składnika ukośnik oddzielone może rozpocząć kropką.
lub koniec z sekwencją.lock
.Muszą zawierać co najmniej jeden
/
. Wymusza to obecność kategorii takiej jakheads/
,tags/
itd., Ale rzeczywiste nazwy nie są ograniczone. Jeśli użyta zostanie opcja--allow-onelevel
, ta reguła zostanie zniesiona.Nie mogą mieć dwóch kolejnych kropek
..
w dowolnym miejscu.Nie mogą one mieć znaki sterujące ASCII (czyli bajtów, których wartości są niższe niż 040 \ lub \ 177
DEL
), przestrzeń, tylda~
, daszek^
lub okrężnicy:
wszędzie.Nie mogą mieć znaku zapytania
?
, gwiazdka*
lub dowolnego wspornika otwartego[
. Zapoznaj się z poniższą opcją--refspec-pattern
, aby uzyskać wyjątek od tej reguły.Nie można rozpocząć lub kończyć kreską
/
lub zawierają wiele kolejnych ukośnik (patrz opcja--normalize
poniżej za wyjątkiem od tej reguły)Nie można zakończyć kropką
.
.Nie mogą zawierać sekwencji
@{
.Nie mogą być pojedynczą postacią
@
.Nie mogą zawierać
\
.
Jak widać, w przypadku, gdy naruszone reguły (5).
Możesz użyć flagi --normalize
normalizować tagów względem ukośniki (usunięto wiodące ukośniki, jak również kolejnych nich):
git check-ref-format --normalize "tags/weird//tag"
The tags/
części gatunków, które są sprawdzania poprawności tag
.
Po krótkiej dyskusji z @NikosAlexandris, można napisać następującą jedną wkładkę sprawdzić tag <some-tag>
ze sprzężeniem zwrotnym tekstowego:
git check-ref-format "tags/<some-tag>" && echo "Valid tag" || echo "Invalid tag!"
Opcja --normalize faktycznie obsługuje tylko ukośniki. Nie działa dla innych problemów, takich jak obecność ~. –
@VincentFourmond: w rzeczy samej program kończy się kodem wyjścia '1' (a więc błędem), może błąd? –
Nie, zachowuje się zgodnie z oczekiwaniami ze strony podręcznika: 'Normalizuj nazwę, usuwając wszystkie znaki wiodące (/) i zwijanie przebiegów sąsiednich ukośników między składnikami nazw w pojedynczy ukośnik. Iff znormalizowana nazwa jest poprawna, a następnie wyślij ją na standardowe wyjście i wyjdź ze statusem 0. (--print jest przestarzałym sposobem na pisownię - unormalize). "To po prostu nie to, co mówisz; -) ... –