Как указано в комментариях, file
является blob
:
file instanceof Blob; // true
И вы можете получить его содержимое с API-интерфейсом чтения файлов https: //developer.mozilla. org / en / docs / Web / API / FileReader
Подробнее: https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications
var input = document.querySelector('input[type=file]');
function readFile(event) {
document.body.textContent = event.target.result;
console.log(event.target.result);
}
function changeFile() {
var file = input.files[0];
var reader = new FileReader();
reader.addEventListener('load', readFile);
reader.readAsText(file);
}
input.addEventListener('change', changeFile);
Команда, которую вы хотите, - git ls-remote
, которая позволяет вам получить некоторую информацию о удаленных репозиториях, но вы не можете отображать историю или каталоги списков или что-либо из этого уровня: по существу, это только позволяет увидеть удаленные объекты на очень высоком уровне (например, вы можете видеть текущие HEAD и теги).
Единственный реальный способ сделать то, что вы хотите (если я правильно понимаю), - это использовать ssh для запуска удаленной командой и возвращать результаты, например:
ssh me@otherhost "cd repo && git log -n 10"
То, что вы хотите, было бы прекрасной функциональностью, если бы они могли ее добавить, но из того, что я прочитал, это не очень просто, так как получение истории и т. д. информации, которая будет локальной для git, и в этот момент вы также можете сделать git fetch.
Вероятно, это считается грязным, но очень практичным решением в случае репозиториев github является просто создание скрипта, например. "git-ls":
#!/bin/sh
remote_url=${1:? "$0 requires URL as argument"}
curl -s $remote_url | grep js-directory-link | sed "s/.* title=\"\(.*\)\".*/\1/"
Сделать его выполнимым и доступным, конечно: chmod a+x git-ls; sudo cp git-ls /usr/local/bin
. Теперь вы просто запускаете его по своему усмотрению:
git-ls https://github.com/mrquincle/aim-bzr
git-ls https://github.com/mrquincle/aim-bzr/tree/master/aim_modules
Также знайте, что для ваших локальных файлов есть утилита git instaweb
. Чтобы иметь возможность показывать файлы и иметь такой сервер, по моему мнению, не уничтожить какие-либо из присущих децентрализованным характеристикам git.
curl -s https://github.com/Itseez/opencv | grep js-directory-link | sed 's|.* title="\(.*\)".*|\1|'
– Anne van Rossum
11 February 2015 в 23:00
Git - это распределенная система контроля версий, а Subversion - централизованная (клиент-серверная) система контроля версий. Они работают по-разному; привыкнуть к этому. Прочитайте мой ответ, объясняющий последствия этой разницы для git-эквивалента вопроса svn status -u
в StackOverflow.
Повторяя себя немного: в централизованной системе контроля версий (например, CVS или Subversion ) почти все команды обрабатываются на сервере и связаны с сетью. Очень немногие команды выполняются локально. Обратите внимание, что для хорошей производительности «svn status» и «svn diff» Subversion сохраняет «нетронутую копию» проверенной версии на клиенте, чтобы не требовать переноса сети для этих общих операций (это означает, что проверка Subversion = 2 x размер рабочего каталога как минимум).
В распределенной системе управления версиями (например, Git, Mercurial или Bazaar), где у вас есть локальная копия (клон) целого хранилища, выполняется почти все команды на клиенте . Очень мало команд требует сетевого подключения к другому репозиторию (к серверу).
Количество команд, которые вы можете выполнять на сервере, ограничено.
Взгляните на http://git-scm.com/book/en/Git-Internals-Transfer-Protocols для получения информации о том, как это сделать по некоторым транспортным протоколам. Обратите внимание, что это не будет работать для стандартного git над SSH.
Для git over SSH обновленный серверный git-сервер должен позволить вам git-архив непосредственно с пульта, который вы могли бы затем например pipe to "tar t", чтобы получить список всех файлов в данной фиксации.
GitHub совместим с svn, поэтому вы можете использовать svn ls
svn ls https://github.com/user/repository.git/branches/master/
BitBucket поддерживает git-архив, чтобы вы могли скачать tar-архив и просмотреть архивные файлы. Это не очень эффективно, но работает:
git archive --remote=git@bitbucket.org:repository HEAD directory | tar -t
, если вы знаете удаленную ветку, которую хотите проверить, вы можете узнать последнюю через:
git ls-tree -r <remote_branch> --name-only
Не точный, но способ вокруг.
Использовать API-интерфейс разработчика GitHub
Надеюсь, это может помочь.
git clone
, - это получить только одну ревизию, передав--depth 1
. Это позволяет избежать получения потенциально большого количества истории и будет достаточным для ответа на такие вопросы, как «какие файлы присутствуют в ревизииabcdef1234567890
?» – ctrueden 6 August 2015 в 22:06