Subversionには、個々のファイルのEOL変換設定の可能性があります。実際、Gitには.gitattributesファイル(「text」および「eol」属性)の形式でもあります。一般的なケースでは、core.autocrlfでは不十分です。
falseに設定すると、svn:eol-style = nativeのすべてのファイルのLF行がgit-svn作業コピーで終わります。これは、Windowsでは予期されていません。
trueに設定すると、すべての行末がLFに変換され、(常に)LFの形式でSVNに送信されます。
実際svn:eol-style=unset
には、「-text」git属性(つまり、変換なし)、svn:eol-style=LF
---から「eol = lf」属性、およびsvn:eol-style=CRLF
---から「eol=crlf」属性に対応する必要があります。svn:eol-style=native
はシステムに依存するため、バージョン管理されていないeol設定で制御できるため、対応するgit属性は「!eol」です(つまりcore.eol
、.git / configからEOL設定を取得します)。
git-svnの代わりに、svn:eol-styleを個々のファイルの対応する.gitattirbutes値に、またはその逆に自動的に変換する任意のソリューションを使用できます。1つの解決策はサーバー側です。SubGitをSVNリポジトリにインストールし、SubGitが作成する純粋なGitインターフェースを使用するだけです。
$ subgit install path/to/svn/repository
# Git interface with correct .gtattributes repository will appear at path/to/svn/repository/.git
# you should setup an access to it
次に、クライアントでクローンを作成し、core.eolをWindowsの場合は「crlf」に設定し、他のOSの場合は「lf」に設定します(デフォルト値は「lf」)。
$ git clone <URL> working_tree
$ cd working_tree
$ git config core.eol crlf #for Windows only
その後、GitはSVNと同じように動作します。
または、クライアント側でSmartGitを使用することもできます。SVNリポジトリのクローンを作成できます(既存のgit-svnリポジトリを開かないでください)---次に、svn:eol-styleを.gitattributesに変換します。この場合、追加のcore.eol設定は必要ありません。SmartGitがそれを処理します。