2

私は自分のローカルホスト上の自分のGitリポジトリでDjangoプロジェクトを喜んで開発しています。私はブランチを作成し、楽しくコミットしてマージしています。パスは次のようなものです。

/path/to/git/django/

構造は次のとおりです。

project
├── README
├── REQUIREMENTS
├── __init__.py
├── fabfile.py
├── app1
├── manage.py
├── app2
├── app3
├── app4
└── project

私の開発チームの残りのメンバーは、複数のプロジェクトを持つ1つの巨大なリポジトリであるSubversionをまだ使用しています。ローカルホストでそれを使用しているときは、まだGitを使用しています(git-svn経由)。パスは次のようなものです

/path/to/giant-svn-repo/

プロジェクトは次のように機能します。

giant-svn-repo
|── project1
|── project2
|── project3
└── project4

リモートsvnリポジトリからの最新の変更を処理したい場合は、git-svnリベースを実行します。次に、新しい機能について、新しいブランチを作成し、開発、コミット、マスターのチェックアウト、ブランチとマスターのマージ、ブランチの削除、そして最後のgit-svndcommitを行います。涼しい。すべてがうまくいきます。

これらの2つのリポジトリ(git-djangoとgit-svnと呼びます)は、現在完全に独立しています。

ここで、git-djangoを新しいプロジェクトとしてgit-svnリポジトリに追加します(つまり、djangoprojectという子ディレクトリにあります)。次のワークフローを使用して、これはかなりうまく機能しています。

  1. git-svnリポジトリにcd
  2. git-svnリポジトリに新しいブランチを作成します
  3. djangoプロジェクトをホストするための新しいディレクトリを作成します
  4. 元のDjangoプロジェクトにリンクする新しいリモコンを追加します
  5. リモートをローカルディレクトリにマージします
  6. 相対パスdjangoprojectのプレフィックスが付いたツリーを読み取り、git-svnリポジトリのルートに基づいてコードベースを正しい場所に配置します
  7. すべてが正しい場所にダンプされるように変更をコミットします

コマンドラインから、これは次のようになります。

> cd /path/to/giant-svn-repo
> git checkout -b my_django_project    
> mkdir /path/to/giant-svn-repo/djangoproject
> git remote add -f local_django_dev /path/to/git/django/project
> git merge -s ours --no-commit local_django_dev/master
> git read-tree --prefix=djangoproject -u local_django_dev/master
> git commit -m 'Merged local_django_dev into subdirectory djangoproject'

これは機能しますが、djangogitrepoの内容が/path/ to / giant-svn-repo / djangoprojectにあることに加えて、リポジトリツリーのメインルートにもあります。

project
├── README
├── REQUIREMENTS
├── __init__.py
├── fabfile.py
├── djangoproject
│   ├── README
│   ├── REQUIREMENTS
│   ├── __init__.py
│   ├── fabfile.py
│   ├── app1
│   ├── manage.py
│   ├── app2
│   ├── app3
│   ├── app4
│   └── project
├── app1
├── manage.py
├── app2
├── app3
├── app4
└── project

私はgiant-svn-repoのすべてのプロジェクトが置かれている親ディレクトリを汚染したようです。

これを止める方法はありますか?

(ところで、これはすべてテストディレクトリ構造で行われています-私はまだ何も破損していません。それを行うための最良の方法を見つけようとしているだけです)

git mergegit read-tree、またはgit commitのいずれかに対するもう1つの引数を(再)定義しているだけだと確信していますが、私はgitkung-fuの限界にかなり達していると思います。

前もって感謝します。

4

0 に答える 0