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

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

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

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

Info

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

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

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

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

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

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

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

Warning

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

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

  2. Создайте персональный токен доступа GitHub с отмеченной опцией 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
   
  1. Убедитесь, что изменения появились в целевом репозитории.