1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/baidu-m-git

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
manifest.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 01:34 b99f7e3

1. manifest 配置

Manifest.json — это файл конфигурации, который определяет информацию о репозиториях, необходимых для управления многорепозиторием. Файл имеет формат JSON и выглядит следующим образом:

{
  "remote": "https://github.com/baidu", // удалённый репозиторий
  "version": 1, // версия файла конфигурации
  "mgit-excluded": false,
  "dest": "Sources", // путь к локальному репозиторию относительно корня mgit
  "repositories": { // список источников кода, включая git-репозитории и не git-репозитории
    "MainApp": {
      "remote-path": "mainapp", // имя удалённого репозитория, которое обязательно для репозиториев, управляемых mgit. В данном случае адрес git-репозитория: https://github.com/baidu/mainapp
      "config-repo": true // указывает, что этот репозиторий является конфигурационным, то есть содержит данный файл конфигурации. Можно указать только один такой репозиторий.
    },
    "Watch": {
      "remote-path": "watch",
      "dest": "temp/test" // необязательно, переопределяет самый внешний уровень определения, в корневом каталоге mgit каталог репозитория будет <корень mgit>/temp/test/Watch
    },
    "BBAAccount": {
      "remote-path": "bbaaccount",
      "abs-dest": "/Users/someone/baidu/temp/my_account" // полный путь к репозиторию (определение dest становится недействительным)
    },
    "Script": {
      "remote-path": "script",
      "lock": {
        "branch": "my_branch", // текущая ветка
        или "tag": "tag1", // тег
        или "commit_id": "123456" // HEAD указывает на commit id
      } // блокирует состояние определённого репозитория. При каждом выполнении команды состояние репозитория сохраняется
    },
    "Some_Repo": {
      "remote-path": "some_repo",
      "mgit-excluded": true // указывает, что репозиторий не управляется многорепозиторием, опционально
    },
    // локальный git-репозиторий или не git-репозиторий (многорепозиторием не управляется)
    "New_Repo": {
      "dest": "Some/Dir",
      "mgit-excluded": true
    },
    "Test_Repo": {
      "dest": "Some/Dir2",
      "dummy": true // (2.3.0 устарело) указывает, что данный репозиторий является фиктивным (многорепозиторием не управляется, EasyBox компоновщик также не использует)
    }
  }
}

2. Конкретные поля в файле manifest

  • 2.1 Одноуровневые поля | Поле | Описание | Обязательность | Тип значения | | --- | --- | --- | --- | | remote | Корневой каталог удалённого репозитория git. Обратите внимание, что полный адрес равен <remote>/<remote-path>. | Обязательно | String | | version | Версия файла конфигурации. | Обязательно | Number | | dest | Каталог репозитория в корне mgit, полный путь к каталогу репозитория равен <корень mgit>/<dest>/<имя репозитория>. | Обязательно | String | | mgit-excluded | Указывает, что репозиторий исключён из управления многорепозиторием mgit, т. е. mgit не будет управлять этим репозиторием. | Необязательно | Bool | | repositories | Список источников кода. | Обязательно | JSON<String, JSON> |

  • 2.2 Данные JSON в repositories | Поле | Описание | Тип значения | | --- | --- | --- | | <имя репозитория> | Уникальный идентификатор репозитория, значение представляет конфигурацию репозитория. Если dest действует, это имя каталога репозитория, и полный путь к каталогу равен <корень mgt>/<dest>/<имя репозитория>. | JSON |

  • 2.3 Поля конфигурации репозитория | Поле | Описание | Обязательность | Тип значения | | --- | --- | --- | --- | | remote-path | Относительный путь к удалённому репозиторию git. Обратите внимание, что полный удалённый адрес равен <удалённый>/<путь>. | Условно обязательно: если явно не указано, что mgit-исключено равно true (т. е. репозиторий должен быть включён в управление mgit), то это обязательное поле, иначе оно необязательно. | String | | remote | Адрес корневого каталога удалённого репозитория git, если он указан, он переопределит одноуровневое поле remote. Обратите внимание, что полный удалённый адрес равен <удалённый>/<путь>. | Необязательное | String | | lock | После указания будет блокировать состояние репозитория. Состояние может быть указано как ветвь, тег или commit_id, например, lock: { "branch": "master" }. | Необязательное | Json | | dest | Относительный каталог репозитория к корню mgit, если он указан, переопределит одноуровневый dest. Полный путь к каталогу репозитория равен <корень mgit>/<dest>/<имя репозитория>. | Необязательное | String | | abs-dest | Полный путь к хранилищу репозитория, если он указан, dest становится недействительным, а полный путь репозитория равен <abs-dest>. | Необязательное | String | | config-repo | Если установлено значение true, указывает, что репозиторий содержит этот файл конфигурации. Не более одного репозитория можно указать как конфигурационный. Обратите внимание, что после указания этого репозитория некоторые операции mgit будут обрабатывать этот репозиторий в первую очередь, такие как checkout, merge и pull. | Необязательное | Bool | | mgit-excluded | Если установлено значение true, mgit не управляет репозиторием, здесь указанное значение переопределит одноуровневую mgit-исключённую. | Необязательное | Bool | Указано как true означает, что данный репозиторий является фиктивным, не подвергается операциям mgit, и EasyBox компоновщик также не использует его исходный код, а используется исключительно для записи информации о репозитории, например, некоторых полностью двоичных сторонних библиотек.

Примечание: после указания dummy:true, по умолчанию указывается mgit-excluded:true (если указано mgit-excluded:false, оно всё равно будет установлено как true). Это поле используется для интеграции с EasyBox при сборке проекта. В повседневном использовании нет необходимости добавлять его.

Опционально Bool
  • Корневой каталог mgit — это каталог, в котором инициализируется mgit и существует скрытый файл .mgit.
  • Имя файла конфигурации должно быть manifest.json.
  • В файле конфигурации одноимённые поля имеют приоритет: конфигурация репозитория > глобальная конфигурация.
  • Для полей типа Bool значение по умолчанию — false.
  • При управлении несколькими репозиториями с использованием центрального репозитория конфигурации необходимо также описать конфигурацию центрального репозитория в файле конфигурации.

3. Локальная конфигурация local_manifest

Если вы хотите выполнить локальную отладку, вы можете временно изменить конфигурацию нескольких репозиториев, создав local_manifest.json; вы можете настроить конфигурацию без изменения manifest.json:

Создание local_manifest.json

  1. С помощью команды migt init можно автоматически создать local_manifest.json:
    • Если команда выполняется без параметра -l, то в конфигурации репозитория будет создан local_manifest.json, который не будет применяться. Его содержимое:
{
  "repositories": {
   // Вы можете добавить/изменить конфигурацию репозитория по своему усмотрению
  }
}
* Если команде передаётся параметр `-l`, в конфигурации репозитория создаётся `local_manifest.json`, и этот файл содержит только информацию о конфигурации репозитория:
// Эта конфигурация означает, что mgit управляет только конфигурацией репозитория, а остальными репозиториями не управляет. Она в основном используется для упрощения инициализации оболочки проекта.
{
   "mgit-excluded": true,
   "repositories": {
      "config_repo_name": {
         "mgit-excluded": false
       }
    }
 }
  1. С помощью команды mgit config можно создать файл конфигурации:
    • Указать каталог, создать в нём local_manifest.json, если каталога не существует, он будет создан автоматически. Например:
$ mgit config -c /a/b/c
 * *`/a/b/c` — это папка, содержащая файл конфигурации, и в этой папке будет создан файл `local_manifest.json`.*
 * Если значение не передано, например `mgit config -c`, то если существует конфигурация репозитория, будет создан пустой файл локальной конфигурации в конфигурации репозитория.
  1. Можно вручную создать local_manifest.json:
    • Создайте файл конфигурации local_manifest.json в любом месте и выполните следующую команду, чтобы передать его под управление mgit:
// Обратите внимание, что если местоположение local_manifest.json перемещается позже, вам нужно будет повторно выполнить эту команду, чтобы она вступила в силу.
$ mgit config -u <path_to>/local_manifest.json
* Без выполнения команды вы можете вручную создать `local_manifest.json` и поместить его в следующие каталоги, чтобы он вступил в силу автоматически:
 * Поместите созданный `local_manifest.json` в тот же каталог, где находится `manifest.json`, или в папку `.mgit/source-config`, чтобы он автоматически вступил в силу.

4. Проверка и объединение local_manifest.json

  • Поля файла local_manifest.json полностью совпадают с manifest.json, за исключением того, что он не выполняет проверку законности полей, и поля, которые не нужно заменять, могут быть опущены.
  • При выполнении команды mgit файл manifest.json объединяется с файлом local_manifest.json, а поля в файле конфигурации заменяются соответствующими полями в локальном файле конфигурации (за исключением поля repositories, которое заменяется соответствующими полями конфигурации репозитория), например:
// manifest.json:
{
  "remote":"https://github.com/baidu",
  "version":1,
  "dest":"Sources",
  "repositories": {
    "TestRepo1": {
      "remote-path":"test1.git",
       "mgit-excluded": false
    }
  }
}


// local_manifest.json:
{
    "remote":"https://github.com/baidu", // Заменяет исходное определение
   "repositories": {
      // Исключает TestRepo1 из управления
       "TestRepo1": {
           "mgit-excluded": true
       },
       // Добавляет новый репозиторий, после завершения настройки конфигурации выполните mgit sync -n, чтобы загрузить этот репозиторий
       "TestRepo2": {
          "remote-path":"test.git"
       }
   }
}

// Объединение:
{
  "remote":"https://github.com/baidu", // Заменено
  "version":1,
  "dest":"Sources",
  "repositories": {
    "TestRepo1": {
      "remote-path":"test1.git",
       "mgit-excluded": true // Заменено
    },
    // Добавлен
    "TestRepo2": {
      "remote-path":"test.git"
    }
  }
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/baidu-m-git.git
git@api.gitlife.ru:oschina-mirror/baidu-m-git.git
oschina-mirror
baidu-m-git
baidu-m-git
master