Мерзавец ошибка Svn dcommit - перезапускает фиксацию

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

, а в режиме наследования только метод переопределяет, так что он может влиять только на его свойство.

22
задан Rob Wilkerson 10 March 2009 в 07:37
поделиться

5 ответов

Необходимо было создать локальное ответвление и сделать работу над этим, тогда когда Вы возвращаетесь, Вы обновляете ведущее устройство, переоснову к локальному ответвлению, слияние назад ведущему устройству тогда dcommit.

, Таким образом, я попытался бы копировать изменения, создать резервную копию их.

Создают локальное ответвление из svn точка синхронизации, объединяют Ваши изменения там. Затем обратно изменения в основном ответвлении, выборке, переоснове к ответвлению, слиянию в от локального ответвления, фиксируют любые конфликты, тогда dcommit.

$ git checkout -b backup    # create a local backup branch with all your work
$ git checkout master   
$ git checkout -b backup2   # 2nd copy just to be safe
$ git checkout master
$ git reset --hard <this is the revision of the last svn-id> # clean up master to make the svn merge easier
$ git svn fetch    # this should update to the current version on the svn server
$ git rebase master backup  # may get a conflict here, fix and commit
... # after conflict is fixed and commited
$ git checkout master 
$ git merge backup --ff  # merge in your local commits
$ git svn dcommit        # push back to the svn

можно получить дополнительную информацию здесь

Другой ответ , Вы могли бы интересоваться.

статьи рабочего процесса мерзавца-svn

Статья

39
ответ дан Community 29 November 2019 в 03:41
поделиться

С большой оценкой для VonC и экстраординарного терпения sfassen ко мне, виду решения разработанных самому. Я не знаю, как или почему, но возможно моя начальная перебаза не работала. Для фиксации его, я закончил тем, что повторно базировался снова. От моего локального магистрального ответвления:

$ git co -b backup  # backup the commits to my local trunk
$ git co trunk      # return to the local trunk
$ git svn rebase    # rebase the trunk from the Svn server
$ git br -d backup  # delete the backup branch

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

Еще раз спасибо за общие предложения и терпение к новичку.

12
ответ дан Rob Wilkerson 29 November 2019 в 03:41
поделиться

Для завершения sfossen превосходный ответ вот, некоторые детали:

С git-svn, Вы получаете по умолчанию локальное ответвление, названное ведущим устройством. Вы не должны делать никакой работы над ним, только быть в курсе, это с svn соединяет ответвление магистралью с:

  • git svn fetch для получения истории от svn соединяют ответвление магистралью по локальному магистральному ответвлению: это не применит те модификации на Ваш рабочий каталог
  • git checkout master для включения магистрального ответвления (только если Вы были на другом ответвлении)
  • git rebase trunk для синхронизации ведущего устройства с соединительной линией.

Однако все Ваши модификации должны быть сделаны на другом локальном ответвлении (позволяет, называют его local-devel).

  • git branch local-devel
  • git checkout local-devel

, Если у Вас есть срочная фиксация, чтобы сделать:

  • git checkout master : swith на ведущем устройстве (),
  • git svn fetch & & git rebase trunk для обновления его с соединительной линией svn
  • git branch fastfix && git checkout fastfix ответвление он
  • исправляет ошибку, компилирует, тестирует,
  • git commit -a : локальная фиксация,
  • git svn dcommit обновляют модификацию к удаленному svn repo
  • git checkout master && git rebase trunk: обновите ведущее устройство снова
  • git branch -D fastfix : удалите ответвление текущих исправлений
  • git checkout local-devel && git rebase master : возвратитесь к dev, с обновленной историей, сделанной на ведущем устройстве, воспроизводимом на Вашем ответвлении dev

, Это - что-то вроде стычки сначала, но путь, более удобный, чем svn diff в файле, который будет применен позже.

5
ответ дан Community 29 November 2019 в 03:41
поделиться

Я собирался прокомментировать, но думал, что это заслужило большей видимости...

git svn rebase , предположил переписывать Ваши фиксации. Из описания и комментариев, я получаю впечатление, что после перебазирования Вы сдержали свои старые фиксации на вершине. Фиксации должны быть заменены более новыми версиями, которые не конфликтуют.

, Чтобы избежать необходимости рыть посредством того, чтобы повторно пороть, Вы могли бы хотеть привыкнуть делать быстрый тег прежде, чем сделать Ваш git svn dcommit. После того, как dcommit успешно выполняется, удалите тег. Если тег перестал работать, можно сделать git reset --hard сопровождаемый git merge <tag>. Повторно выполните свою перебазу для приведения в порядок истории назад, перетега и re-dcommit снова.

3
ответ дан Ryan Graham 29 November 2019 в 03:41
поделиться

У меня была похожая ситуация. Я выполнял git svn dcommit через плохое сетевое соединение, и в какой-то момент он дал сбой. Я обнаружил, что проблема была вызвана тем фактом, что в репозитории Subversion уже была новая фиксация, но локальный аналог git-svn посчитал, что фиксации еще нет в SVN. Решения из других ответов здесь не помогли, однако это помогло:

git svn reset -r <last_svn_commit_git_was_aware_of>
git svn fetch
git svn rebase

После этого я наконец смог выполнить git svn dcommit без каких-либо ошибок.

4
ответ дан 29 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: