2017-03-29 6 views
-1

現在のワークフローの一部として、特定のgit reposを作成時にユーザーのホームディレクトリに事前クローンします。しかし、これらのリポジトリが増加し、ユーザ数が増加するにつれて、ディスク使用量はますます問題になっています。特定のコミット時に複製を実行する

私は2つの面でこれを攻撃しています:なし変更されたファイルと

  1. 既存のレポは非常に誇らしげ初期状態に戻り、それらをgit reset --hard $first_commitを取得します。ログイン時の通常のgit pullは、いつものように最新の状態になります。
  2. 新しいユーザーは$initial commitで始まるreposを取得し、git pullで最新の状態になることができます。

私は#1の解決策を考え出し、レビューのために提出しましたが、多くのIOオーバーヘッドを発生させない#2の解決策を考え出すのに問題があります。

簡単な解決策は、単に次のようになります。

git clone /opt/git/app.git /home/user/app && \ 
git -C /home/user/app reset --hard $first_commit 

ただし、のみ削除する完全な作業ツリーをチェックアウトし、それが新しいアプリケーションサーバーが沿って作成された正当な関心事である余分なIOの多くを負担しますすべての必要なユーザーと

私はthis answerに基づいていますが、結果のレポが正しくorigin/masterからプルするように設定されていない次のことを試してみた:

git init /home/user/app 
git -C /home/user/app remote add origin /opt/git/app.git 
git -C /home/user/app fetch origin $first_commit 

任意の分岐が何とか全く設定されているようには見えません、 .git/configには次のものがありません:

[branch "master"] 
     remote = origin 
     merge = refs/heads/master 

ありがとうございます。上流master年代設定する

+0

あなたはgitの履歴のいずれかを必要としない場合には、プロジェクトのバイナリを構築し、単純にその仕事をダウンロードするのでしょうか? –

+0

@AndyRay nope。これはちょっとしたジャッキーワークフローを持つマルチ開発環境です。 – Sammitch

答えて

1

使用git branch --set-upstream-to

git init 
git remote add origin /opt/git/app.git 
git fetch origin 
git reset --hard "$first_commit" 
git branch --set-upstream-to=origin/master 
+0

あなたは今、男です。 – Sammitch

関連する問題