4

fluentmigrator のフォークであるguthubにリポジトリがあります。これは私の最初の git への進出であり、フォークとアップストリーム リポジトリの間の空白の競合をクリーンアップできない状況に陥りました。

私は Windows 7 で実行しており、msysgit クライアントを使用しています。リンクされたリポジトリは次のとおりです

$ git remote -v
origin  https://github.com/lscharen/fluentmigrator (fetch)
origin  https://github.com/lscharen/fluentmigrator (push)
upstream        http://www.github.com/schambers/fluentmigrator (fetch)
upstream        http://www.github.com/schambers/fluentmigrator (push)

私のローカル リポジトリは、私の github リポジトリで最新のものであり、アップストリーム リポジトリに対していくつかの変更があります

lscharen@LSCHAREN01 /c/checkout/fluentmigrator (master)
$ git diff --stat origin/master

lscharen@LSCHAREN01 /c/checkout/fluentmigrator (master)
$ git diff --stat upstream/master
 src/FluentMigrator.Console/MigratorConsole.cs      |  563 ++++++++++----------
 .../Initialization/IRunnerContext.cs               |    1 +
 .../Initialization/RunnerContext.cs                |    1 +
 src/FluentMigrator.Runner/MigrationLoader.cs       |  193 ++++----
 src/FluentMigrator.Runner/MigrationRunner.cs       |    4 +-
 src/FluentMigrator.Runner/VersionLoader.cs         |  343 +++++++------
 .../Versioning/VersionMigration.cs                 |  221 +++++----
 .../Unit/TestVersionTableMetaData.cs               |  105 ++--
 .../Unit/VersionLoaderTests.cs                     |  272 +++++-----
 .../Infrastructure/DefaultMigrationConventions.cs  |  252 +++++-----
 .../Infrastructure/MigrationMetadata.cs            |   91 ++--
 src/FluentMigrator/MigrationAttribute.cs           |   70 ++--
 .../DefaultVersionTableMetaData.cs                 |   84 ++--
 .../VersionTableInfo/IVersionTableMetaData.cs      |   57 ++-
 14 files changed, 1182 insertions(+), 1075 deletions(-)

これらのファイルの一部の変更は、純粋な EOL の問題です。差分を見て、src/FluentMigrator.Console/MigratorConsole.cs空白を無視すると。

$ git diff --stat -w upstream/master src/FluentMigrator.Console/MigratorConsole.cs
 src/FluentMigrator.Console/MigratorConsole.cs |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

さまざまなSOの回答からの設定に関するアドバイスに従って問題を解決しようとしましたcore.autocrlfが、ファイルが更新され、 との差分が表示される状態にあるようには見えませんがoriginupstream.

これが私が試したことです。

この回答core.autocrlf inputから設定

$ git rm --cached src/FluentMigrator.Console/MigratorConsole.cs
rm 'src/FluentMigrator.Console/MigratorConsole.cs'

$ git config core.autocrlf input

$ git add src/FluentMigrator.Console/MigratorConsole.cs

$ git diff --stat upstream/master src/FluentMigrator.Console/MigratorConsole.cs
 src/FluentMigrator.Console/MigratorConsole.cs |  563 +++++++++++++------------
 1 files changed, 287 insertions(+), 276 deletions(-)

core.autocrlf falsedos2unix で設定して手動で変換する

$ git config core.autocrlf false

$ dos2unix src/FluentMigrator.Console/MigratorConsole.cs

$ git diff --stat upstream/master src/FluentMigrator.Console/MigratorConsole.cs
 src/FluentMigrator.Console/MigratorConsole.cs |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

近い!^Mしかし、diff に挿入された各行の最後にぶら下がっている文字があります。

+        public string Group;^M

設定git config core.whitespace cr-at-eolによりdiff見た目は正しくなりましたが、このファイルをコミットすると、互換性のない空白文字がリポジトリに追加されるのではないかと心配しています。

プル リクエストのフォークを修正しようとしているので、この問題に対処するための一般的なアドバイスをいただければ幸いです。

4

1 に答える 1

1

ローカルクローンを完全にやり直すには、次のようにします。

  • git config --global core.autocrlf=false
  • git clone https://github.com/lscharen/fluentmigrator

つまり、そもそもEOL変換が行われるべきではなく、dos2unix今はすべてのファイルになっているはずです。

于 2012-05-18T23:16:51.290 に答える