Появилась возможность превратить ваш GitHub аккаунт в Безлимитное Облачное Хранилище Данных. И это вовсе не миф.
Согласно с информацией, данной GitHub, каждый пользователь может создать бесконечное количество публичных и приватных репозиториев. Мы можем загружать до 1000 Мб в один репозиторий и каждый из файлов не должен превышать размера в 100 Мб. Тут попахивает возможностью создать бесплатное и безлимитное облачное хранилище, не так ли?
Я осознаю что на сегодняшний день уже существует множество вариантов хранения данных в облаке и такие лидирующие компании, как Dropbox, Google Drive или даже Amazon S3 предоставляют свои услуги по очень низким ценам, не уступая при этом и качеством. Но решение, основанное на GitHub CDN может быть крайне полезно если вам нужно максимально быстро и просто загрузить файлы в облако, и в то же время не беспокоится о надежности и доступности ваших валов в любое время. Даже через десятки лет.
Как загрузить любой файл в репозиторий GitHub?
Вы можете спросить, «В чем проблема, Карл? Почему я просто не могу сделать git pull, git push?» Спасибо за вопрос. И ответ мой максимально прост: Я не хочу использовать git pull каждый раз, когда я хочу загрузить новый файл. Я хочу чтобы все было максимально просто. В один клик.
И никакой проблемы не было, если бы эта чудесная кнопка имела соответствующий API. Но, к сожалению его нет.
Но я нашел несколько вариантов чтобы «сделать» это. И вот наипростейший из них.
Загрузка файла в GitHub
Один из наиболее быстрых и простых вариантов загрузить файл в GitHub это создавать новую ветку для каждого загружаемого файла.
Подробнее:
В первую очередь, создайте новый репозиторий с файлом лицензии (или каким нибудь другим) и ветке master. Вы можете это сделать с одним POST запросом используя GitHub API:
axios.post(`https://api.github.com/user/repos?access_token=${token}`, {
name: `block1`,
description: `Block 1`,
homepage: "https://morejust.store/",
private: false,
has_issues: false,
has_projects: false,
has_wiki: false,
license_template: "unlicense"
});
Далее, создавайте новую ветку для загрузки каждого нового файла. Так-же, не забудьте что имя ветки не должно совпадать с уже существующими, поэтому рекомендую добавлять Unix timestamp к имени ветки.
И наконец-то, мы можем пушнуть (push) нашу ветку в GitHub:
git push --set-upstream origin $BRANCHNAME
После, вы еще можете удалить все локальные ветки чтобы не занимать лишнее дисковое пространство:
git checkout master
git branch -D $BRANCHNAME
Был реализован bash-скрипт который все это делает за вас, ссылка тут.
Как я могу создать свое безлимитное хранилище?
Ах да! Для этого был создан сервис Morejust.store — приложение, которое может создать бесплатное безлимитное хранилище для вас. По ссылке будет и проект на GitHub для наглядности процесса.
Парни, какой же кайф пользоваться своим-же сервисом. Вот реально удобно. Пишу статью на Хабр, нужно вставить картинку, а он принимает только картинки со ссылками. 2 секунды, картинка уже в облаке и я вставляю ссылку на хабр. Ну не сказка ли?
— Автор, на момент написания статьи.
P.S. Мы не злоупотребляем никакими возможностями сервиса GitHub и никаких взломов / обходов мы не делали. Все «заводские» лимиты и условия GitHub соблюдены, мы лишь сделали удобно там, где ранее это было неудобно.
Спасибо.
Автор: Виктор Кириллов