Подтвердить что ты не робот

Git -svn переименовать ветку отслеживания

Мои текущие svn-клонированные ветки (с использованием опции -s 'standard layout') называются:

$ git branch -r
branch1
branch2

Я хотел бы переименовать те, что они:

$ git branch -r
svn/branch1
svn/branch2  

Как будто я вызвал $ git -svn clone --prefix svn изначально. Мне не нужно менять имена на удаленной стороне.

4b9b3361

Ответ 1

Предполагая, что у вас нет другого пульта дистанционного управления, добавленного с помощью git remote add ..., попробуйте выполнить следующую процедуру:

  • git gc, чтобы упаковать все ссылки ref в .git/packed-refs.
  • Откройте .git/packed-refs для редактирования. Замените "refs/remotes/" на "refs/remotes/svn/" .
  • Откройте .git/config для редактирования. Вы должны увидеть что-то вроде:

    [svn-remote "svn"]
        url = SVN_REPO_URL
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*
    

    Замените "refs/remotes/" на "refs/remotes/svn/" :

    [svn-remote "svn"]
        url = SVN_REPO_URL
        fetch = trunk:refs/remotes/svn/trunk
        branches = branches/*:refs/remotes/svn/*
        tags = tags/*:refs/remotes/svn/tags/*
    

    Обязательно обновите все ветки удаленного отслеживания. Для этого вы можете просто заменить "refs/remotes/" на "refs/remotes/svn/" во всем файле.

Я протестировал эту процедуру с копией моего зеркала git -svn репозитория GNU Nano и, похоже, работает.

EDIT: Я только что проверил, что эта процедура не испортит операции git -svn dcommit или rebase. Это как если бы --prefix=svn/ изначально были указаны в команде git svn clone -s SVN_REPO_URL.