Как получить просто папку из удаленной ветки в GIT - PullRequest
0 голосов
/ 28 октября 2011

У меня есть хранилище на github и несколько веток.Весь репо составляет около 2 концертов.До перехода в git у меня был скрипт ant, который извлекал бы папку из репозитория svn, создавал бинарные файлы и затем фиксировал обратно в репозиторий.

К сожалению, после перехода на git я не могу найти простой способсделать это.Каждый раз, когда запускается мой ant-скрипт, я хочу, чтобы он получил свежую копию папки из удаленной ветви и зафиксировал ее после выполнения некоторой работы.Я не хочу загружать весь репозиторий (2 ГБ данных) каждый раз, когда запускаю ant-скрипт.

Вот пример того, как мой ant-скрипт выглядел с SVN

С GIT рабочий процесс выглядит как

  • GIT INIT
  • GIT CLONE http://project.branch15 (2 ГБ)
  • ИЗМЕНИТЬ НЕКОТОРЫЕ МАТЕРИАЛЫ в / подпапку / подпапку / подпапку
  • ветка COMMIT 15

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Похоже, у вас слишком много вещей в одном хранилище. Вы должны изменить его, чтобы использовать подмодули. * Если есть папка, которая может жить независимо от их предков или братьев и сестер, тогда это хороший кандидат для подмодуля.

Подмодули Git сами являются репозиториями git и, таким образом, могут быть клонами, извлечены, изменены и отправлены в независимый от родительского репозитория.

Вы также можете иметь иерархию подмодулей. Таким образом, в вашем примере каждая подпапка может быть подмодулем. (но вы должны учитывать вышесказанное *).

Еще одним преимуществом этого подхода является то, что вы можете клонировать основной репозиторий (который может быть 2 ГБ) и предполагать, что он состоит из нескольких субмодулей (скажем, 10 ~ 200 МБ), не занимая все 2 ГБ. Затем вы можете запустить проверки субмодулей для нужных вам репо.

Вот пример:

Файловая структура

  /MainApp/           
       /Utils    200MB
       /Lib    
^        /OSX    200MB
^        /WIN32  200MB
^        /WIN64  200MB  
^        /NIX    200MB 
       /Source   150MB 
                 =====
                 1.15GB

Если каждая из папок ^ является подмодулем, вы можете сделать следующее

$ git clone MainApp
  # Downloads the 200MB for Utils and the 150MB for Source (plus git files)
$ cd MainApp
$ git submodule update /Lib/OSX
  # Downloads the 200MB OSX folder
0 голосов
/ 28 октября 2011

Вы не можете сделать это, это не то, как работает Git. Клонируйте репозиторий на свой компьютер, внесите изменения, подготовьте и зафиксируйте его, а затем отправьте обратно в другой репозиторий.

Если ваш проект работал на сервисе, таком как GitHub, который поддерживает редактирование файлов на сайте, то вам не нужно ничего этого делать. Изменить файл на сайте было бы невероятно просто.

Рассматривали ли вы разделение этого хранилища на множество разных под-хранилищ, вместо того, чтобы иметь такой большой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...