2013-12-25 5 views
5

Я только что создал релизы для своего программного обеспечения NFQL на github.
Страница пресс-релизов: https://github.com/vbajpai/nfql/releasesКак Github выпускает генерировать имена файлов архива?

Для последней версии, v0.7. Если я нажму кнопку tarball, он сохранит nfql-0.7.tar.gz. Это здорово и точно, как я хочу, чтобы мои выпущенные архивы были названы.

enter image description here

Однако мне нужна ссылка на загрузку самого тарболла. Так что я могу создать файл MacPorts/Homebrew для tarball. Если я смотрю на ссылку для загрузки, это:

а) https://github.com/vbajpai/nfql/archive/v0.7.tar.gz или
б) https://codeload.github.com/vbajpai/nfql/tar.gz/v0.7

теперь, если я использую curl/wget он сохраняет тарболл как v0.7.tar.gz. Я знаю, что при загрузке можно указать имя файла, используя curl/wget. Я хочу знать, есть ли надежный URL-адрес github, который я могу использовать для получения моего tarball как nfql-0.7.tar.gz.

PS: Что там github делает? Как изменилось имя файла браузерами при прямом нажатии ссылки на исходный код?

ответ

8

Первая ссылка дает перенаправление на второй:

curl --head https://github.com/vbajpai/nfql/archive/v0.7.tar.gz 
HTTP/1.1 302 Found 
Location: https://codeload.github.com/vbajpai/nfql/tar.gz/v0.7 
... 

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

Имя файла определяется с помощью пользовательского Content-Disposition HTTP заголовка: (. Соответственно)

curl --head https://codeload.github.com/vbajpai/nfql/tar.gz/v0.7 
HTTP/1.1 200 OK 
Content-Disposition: attachment; filename=nfql-0.7.tar.gz 
... 

Таким образом, вы можете использовать curl «s -O, --remote-name, -L, --location и -J, --remote-header-name писать вывод в файл с именем в качестве пульта дистанционного управления файл, следуйте редиректов и использовать заголовок предоставленного файла:

curl -LOJ https://github.com/vbajpai/nfql/archive/v0.7.tar.gz 
1

Не уверен, если это работает, когда вопрос был первоначально размещен, но теперь вы можете использовать https://github.com/vbajpai/nfql/archive/v0.7/nfql-0.7.tar.gz, чтобы получить правильное имя файла напрямую, не глядя на заголовки. Это очень приятно при использовании wget, поскольку вам не нужны флаги, просто wget https://github.com/vbajpai/nfql/archive/v0.7/nfql-0.7.tar.gz

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

+0

Это замечательно. Я уверен, что это документировано где-то, но я не мог найти его. Благодаря! – BHS

Смежные вопросы