문제

나는 그것을 게시하고 싶을 때 마침내 내 질문에 대한 답을 찾았다! 그러나 다른 사람을 돕는 경우를 대비하여 내 대답을 포함하여 여전히 게시 할 것입니다.

CVS에서 Subversion으로 변환 할 때 CVS2SVN은 메시지가있는 일부 파일에서 실패했습니다.

"xxx is not a valid ,v file"

뭐가 문제 야?

도움이 되었습니까?

해결책

CVSNT는 CVS2SVN이 필요한 일부 파일에서 마지막 0xA를 생략 한 것으로 나타났습니다. 다음 C# 코드로 쉽게 수정할 수 있습니다.

static void Main(string[] args)
{
  foreach (string file in Directory.GetFiles(args[0], "*,v", SearchOption.AllDirectories))
  {
    using (FileStream sin=File.Open(file, FileMode.Open, FileAccess.ReadWrite))
    {
      sin.Position=sin.Length-1;
      if (sin.ReadByte()==0x40)
      {
        Console.WriteLine("fixed "+file);
        sin.WriteByte(0xa);
      }
    }
  }
}

다른 팁

제 경우에는 부패가있었습니다 symbols 섹션의 섹션 xxx,v 파일. 예상 형식은입니다 tag_name:tag_rev, 그러나 다음의 사례가있었습니다.

  • 잃어버린 :tag_rev
    예를 들어 tag_name
    선을 삭제하여 수정되었습니다.
  • 다수의 tag_name
    예를 들어 tag_name1:tag_name2:tag_rev
    두 번째 태그 이름을 제거하여 고정되었습니다 (제거 한 이름은 아마도 그 이름에 따라 다릅니다).
  • 잘못된 이름/개정 구분 기호. 제 경우에는 잘못된 캐릭터가 항상있었습니다 z (ASCII 간에는 1 비트 차이 만 있습니다 : 그리고 z).
    예를 들어 tag_nameztag_rev
    교체하여 수정되었습니다 z ~와 함께 :.

조사 중에 도움을주기 위해 a를 추가했습니다 print 라인으로 cvs2svn_rcsparse\common.py. 기호를 구문 분석하는 경우 인쇄 된 마지막 태그가 원인입니다.

def _parse_admin_symbols(self, token):
while 1:
  tag_name = self.ts.get()
  # WileCau print the token and tag_name
  print 'token=|%s| tag_name=|%s|' % (token, tag_name)
  if tag_name == ';':
    break
  self.ts.match(':')
  tag_rev = self.ts.get()
  self.sink.define_tag(tag_name, tag_rev)

추가 인쇄는 출력에 상당히 많은 소음을 추가하므로 예외가 발생하면 인쇄하는 것이 좋을 수 있지만 이는 내 요구에 충분했습니다.


또한이 링크가 내 문제가 아닌 것으로 밝혀졌지만 다른 사람을 도울 수 있습니다. 그것을 문서화 한 Christian Haarmann에게 신용.

http://tigris-scm.10930.n7.nabble.com/suggestions-for-cvs2svn-fix-for-error-quot-myfile-txt-v-is-a-valid-v-file-quot- TD54240.html

링크가 유효하지 않은 경우 요약은 누군가가 편집 한 것입니다. xxx,v 파일과 편집기는 0x0A (LF)를 0x0D/0X0A (CR/LF)로 대체했으며 추가 문자로 인해 파서가 파일이 손상되었다고 생각했습니다.

나는 또한 그런 오류입니다. CVS2GIT를 사용하여 CVS 저장소를 GIT로 마이그레이션하면 여러 파일의 경우이 오류가 발생합니다. 폐쇄가 누락되어 있음을 감지했습니다 0x40 (@) 파일 끝에.

그래서 내 해결책은 다음과 같습니다.

1. Open the corrupted cvs-history-file e.g. with vim (maybe in binary mode)
2. Add the missing @

이것이 문제를 해결하지 않으면 손상된 파일의 내용을 RCS-File 형식과 비교하십시오. RCS_MAN_PAGE

문제를 해결하는 한 가지 방법은 실행하는 것입니다 rcs log *file,v*, 그것은 당신에게 통찰력을 제공 할 수 있습니다.

내 경우에는 @가 누락되어 있고 일부 파일에는 세미콜론이 누락되었으며, 기존 저장소를 CVSPServer로 가져 오는 데 사용한 도구가 참조되지 않은 버전으로 던져졌습니다.

행운을 빕니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top