Зеркалирование

Зеркалирование
Beta

Зеркалирование из внешнего сервиса в GitVerse
Beta

⚠️
Ограниченный доступ

Пользователи имеют возможность создавать свои зеркала репозиториев.

Синхронизация зеркала с оригинальным репозиторием происходит каждые 24 часа.

Для создания зеркала при импорте репозитория отметьте чекбокс Сделать репозиторий зеркалом.

Пример:

Чекбокс зеркалирования репозитория из внешнего сервиса при импорте

На странице зеркала репозитория будет отображаться информация о том, что это зеркало, и ссылка на оригинальный репозиторий:

Чекбокс зеркалирования репозитория из внешнего сервиса при импорте

Зеркалирование из GitVerse в сторонние сервисы
Beta

⚠️
Ограниченный доступ

Зеркалирование из GitVerse в GitHub
Beta

Для зеркалирования используется CI/CD: по событию push в репозитории запускается скрипт, выполняющий git push --force в репозиторий на GitHub.

⚠️

git push --force перезаписывает все изменения в целевом репозитории на GitHub при каждом коммите в репозиторий на GitVerse.

  1. Создайте на GitHub пустой репозиторий в который будут зеркалироваться изменения.

  2. Создайте персональный токен доступа GitHub (opens in a new tab) с отмеченной опцией public_repo.

  3. Включите CI/CD в настройках зеркалируемого репозитория на GitVerse.

  4. Создайте секреты:

    1. GH_MIRROR_ACTOR - имя пользователя на GitHub;
    2. GH_MIRROR_REPO - наименование репозитория в GitHub, созданное на шаге 1;
    3. GH_MIRROR_TOKEN - GitHub персональный токен, созданный на шаге 2.
  5. Создайте в директории .gitverse/workflows/ вашего репозитория на GitVerse mirror_to_gh.yaml файл следующего содержания:

    name: Mirror Repository
     
    on:
      push:
        branches: 
          - '*'  # Зеркалировать все ветки
        tags:
          - '*'  # Зеркалировать все теги
     
    jobs:
      mirror:
        runs-on: ubuntu-cloud-runner
        permissions:
          contents: write  # Требуется для force push
     
        steps:
        - name: Checkout code
          uses: actions/checkout@v4
          with:
            fetch-depth: 0  # Полная история коммитов
     
        - name: Configure Git
          run: |
            git config --global user.name "Your Name"
            git config --global user.email "Your e-mail"
     
        - name: Mirror to Remote
          env:
            TARGET_REPO: "https://${{ secrets.GH_MIRROR_ACTOR }}:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${{ secrets.GH_MIRROR_ACTOR }}/${{ secrets.GH_MIRROR_REPO }}"
          run: |
            # Добавляем целевой репозиторий как remote
            git remote add target $TARGET_REPO
            
            # Синхронизируем все ветки и теги
            git push --mirror --force target
     
  6. Убедитесь, что изменения появились в целевом репозитории.