Как исправить "файл не найден" на git svn dcommit? - PullRequest
7 голосов
/ 12 января 2011

Я пытаюсь сделать git svn dcommit, однако один каталог продолжает сбой на мне и, следовательно, останавливает мой коммит и продолжает получать эту ошибку:

Файловая система не имеет элемента: Файл ненайдено: транзакция '43999-6', путь '/ path / to / folder' в / usr / local / git / libexec / git-core / git-svn line 572

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

edit
некоторые из следующих ответов не полностью отвечают на мой вопрос, но, похоже, они направлены в правильном направлении:

Последняя проблема, кажется, то, что я хотел, но с размером моего репо (в прошлый раз, мне потребовался целый рабочий день, чтобы оформить заказ целиком), и небольшим количеством работыЯ бы проиграл, просто сделав сброс hard (что в конечном итоге, похоже, помогло), я выбрал вариант сброса hard.

Ответы [ 5 ]

1 голос
/ 26 октября 2012

Я считаю, что проблема должна быть исправлена ​​в Git> = 1.8.0

Вы должны обновить ее.

Домашняя страница: https://github.com/git/git

1 голос
/ 01 июля 2011

svn reset - у меня не получилось

причина этого в том, что при выполнении dcommit для svn кажется, что фиксация, которая удаляла файл, выполняется одновременно в git и svn, но ссылка теряется.

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

примечание: git svn делает svn правильно переименовывает / перемещает файлы. Он (либо tortoisegit + mysgit, либо jgit / egit) делает это автоматически все время;)

1 голос
/ 28 сентября 2011

Я смог обойти проблему неработающего git svn для репозиториев с пробелами в них, исправив git-svn.

Я обновил функцию url_path до:

sub url_path { 
  my ($self, $path) = @_; 

  my $url = $self->{url} . '/' . $self->repo_path($path); 
  if ($self->{url} =~ m#^https?://#) { 
    $url =~ s!([^~a-zA-Z0-9_./-])!uc sprintf("%%%02x",ord($1))!eg; 
    $url =~ s!^(https?)%3A//!$1://!; 
  } 
  $url 
} 

Это гарантирует, что пробелы в URL кодируются правильно.

Кажется, это работает для меня, но не было тщательно проверено.

1 голос
/ 26 мая 2011

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

Обновление

Вероятно, это связано с тем, что git-svn не очень хорошо работает с пробелами в URL Мне часто приходится переименовывать пути к проектам, чтобы заставить их работать с git-svn. Конечно, это не приемлемое решение для проектов, над которыми работают другие люди. Для тех, кто просто использует svn для перемещения файлов. Это огромные хлопоты.

0 голосов
/ 18 мая 2015

Я знаю, что это старый вопрос, но недавно у меня возникла именно эта проблема, и я хотел рассказать, как я ее исправил.По общему признанию это не хорошее решение, но оно позволило мне завершить мой коммит.Я сделал следующее:

  1. Добавил папку / файл под жалобой обратно в SVN, используя SVN.
  2. Зафиксировал мой исходный код из GIT в SVN (GIT SVN dcommit --rmdir)
  3. Удалил папку / файл в git и зафиксировал это в svn.

Это означало, что у меня было 2 дополнительных коммита, один для добавления, а затем другой для удаления папки / файла, который нарушил работу.но после этого все снова заработало как положено.Я знаю, что это не очень хорошее решение, и оно не решает суть проблемы, но, по крайней мере, позволило мне зафиксировать свой код.Надеемся, что это может помочь кому-то еще в этой ситуации, нуждающейся в быстром решении.

...