Как извеcтно, gitweb, анализируя URL в запросах, не ориентируется на последний компонент пути до query string, если эта query string содержит квазипараметр `p=`. В пользовательских каталогах public и packages можно даже опустить: https://git.altlinux.org/people/specbot/public?p=specs.git (к пути дописывается /, происходит перенаправление, последний компонент остаётся пустым, и, видимо, поэтому показывают репозиторий) Из нижеописанных путей только первый показывает коммит, на который смотрит HEAD у репозитория: 1) https://git.altlinux.org/gears/x/..git?p=xz.git;a=commit;h=HEAD 2) https://git.altlinux.org/gears/x/?p=xz.git;a=commit;h=HEAD 3) https://git.altlinux.org/gears/..git?p=xz.git;a=commit;h=HEAD 4) https://git.altlinux.org/gears/?p=xz.git;a=commit;h=HEAD 2 и 4, правда, показывают листинг, игнорируя query string. Предлагаю для URL из gears/, если последний компонент пути *.git указан сразу после gears, вычислять нужный префикс из параметра `p=` и дописывать (т. н. rewrite) его после gears/. Например, по URL (3) отдавать то, что было бы отдано по URL (1).
Можно и (4) в (3) превращать, но если есть причины так не делать, то не надо.
https://git.altlinux.org/gears/x/xz.git?p=xz.git;a=commit;h=HEAD - а разве не такой URL должен быть ? всё остальное выглядит как ошибки, с которых надо сделать редирект.
(In reply to Anton Farygin from comment #2) > https://git.altlinux.org/gears/x/xz.git?p=xz.git;a=commit;h=HEAD - а разве > не такой URL должен быть ? всё остальное выглядит как ошибки, с которых надо > сделать редирект. Пожалуй, да, но gitweb удивительным образом так себя не ведёт. https://sourceware.org/git/glibc.git?p=glibc.git;a=blob;f=string/strerrordesc_np.c;hb=glibc-2.41 https://sourceware.org/git/bzip2.git?p=glibc.git;a=blob;f=string/strerrordesc_np.c;hb=glibc-2.41 По обоим этим URL выдаётся контент из glibc.git.
непонятно только какое поведение должно быть ? 404 ?
(In reply to Anton Farygin from comment #2) > https://git.altlinux.org/gears/x/xz.git?p=xz.git;a=commit;h=HEAD - а разве > не такой URL должен быть ? всё остальное выглядит как ошибки, с которых надо > сделать редирект. У нас некоторые члены team на это завязываются и, составляя URL, чтобы опубликовать на него ссылку, пишут в последнем компоненте `..git`, в т. ч. в документации на altlinux.org, в том числе в рекомендациях начинающим мейнтейнерам. IMHO, делать здесь простые и незапутывающие URL уже поздно, проще где-то описать алгоритм в человекопонимаемом виде. Тем более, был экспериментальный cgit-интерфейс к контенту на git.a.o, где URL совсем другие.
Для тех случаев, когда указаны непротиворечащие URL - можно сделать редирект. Если в URL явная ошибка, то 404 будет отличным выбором, на мой взгляд.