2013-09-24 83 views
0

我嘗試轉換一個顛覆回購具有與git 「混帳SVN ......」svn涉及到混帳,創造-忽略不工作

(指南從http://john.albin.net/git/convert-subversion-to-git

不幸的是「混帳SVN創建,忽視「不起作用:

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

如何獲得svn:ignore屬性到.gitignore文件?

+0

本指南沒有提及'create-ignore',只是'show-ignore'。 –

+0

show-ignore命令不起作用。它顯示所有svn:忽略條目。 – guettli

+0

「它顯示所有svn:忽略條目。」但這是'show-ignore'的目的嗎? –

回答

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 
+1

你能解釋一下原來的問題,以及這個腳本如何解決它? – Ovesh

+0

@Ovesh從我的問題:'git svn create-ignore'失敗。 – guettli

+2

謝謝,但我的意思是,什麼是_underlying_問題,您的解決方案與它有什麼關係? 還是你決定解決它? – Ovesh