0

「git svn ...」で Subversion リポジトリを git に変換しようとしています。

( http://john.albin.net/git/convert-subversion-to-gitからのガイド)

残念ながら、「git svn create-ignore」は機能しません:

config --get svn-remote.svn.fetch :refs/remotes/git-svn$: command returned error: 1

svn:ignore プロパティを .gitignore ファイルに取得するにはどうすればよいですか?

4

1 に答える 1

0

私自身の質問に答えてください。

少しスクリプトを書きました。古い SVN ディレクトリと新しい git ディレクトリが必要です。

#!/usr/bin/python
import os, sys, subprocess

svn_dir=sys.argv[1].rstrip('/') # usage: python ... svn_dir git_dir
if not os.path.exists(os.path.join(svn_dir, '.svn')):
    print 'Not a svn-dir:', svn_dir
    sys.exit(1)

git_dir=sys.argv[2].rstrip('/')
if not os.path.exists(os.path.join(git_dir, '.git')):
    print 'Not a git-dir:', git_dir
    sys.exit(1)

for root, dirs, files in os.walk(svn_dir):
    dirs[:]=[d for d in sorted(dirs) if not d in ['.svn']]
    pipe=subprocess.Popen(['svn', 'propget', 'svn:ignore', root],
                          stdout=subprocess.PIPE)
    git_ignore_lines=[]
    for line in pipe.stdout.readlines():
        line=line.strip()
        if not line:
            continue
        git_ignore_lines.append(line)
    if not git_ignore_lines:
        continue
    git_ignore_dir=os.path.join(git_dir, root[len(svn_dir)+1:])
    if not os.path.exists(git_ignore_dir):
        os.makedirs(git_ignore_dir)
    git_ignore=os.path.join(git_ignore_dir, '.gitignore')
    if os.path.exists(git_ignore):
        old=open(git_ignore).read().split()
    else:
        old=[]
    old.extend(git_ignore_lines)
    fd=open(git_ignore, 'wt')
    seen=set()
    for line in old:
        if line in seen:
            continue
        fd.write('%s\n' % line)
        seen.add(line)
    fd.close()
    print 'wrote', git_ignore
于 2013-09-24T13:03:15.613 に答える