2016-09-02 4 views
-1

したがって、基本的に2つのバージョンのプロジェクトがあり、一部のユーザーにとっては最新のバージョンを使いたいのですが、古いバージョン。両方とも同じファイル名を持ち、複数のユーザーが同時に使用します。これを実現するには、実際にブランチを切り替えることなく、別のgitブランチから関数を呼び出す必要があります。 これを行う方法はありますか?現在のリポジトリ以外の別のgitブランチを、ブランチを変更しないで呼び出す

たとえば、現在のブランチがv1で、もう1つのブランチがv2の場合、変数flagの値に応じて、あなたがいることを実行する必要があり理由にコメントがないと

if flag == 1: 
    # import function f1() from branch v2 
    return f1() 
else: 
    # use current branch v1 
+2

これが必要な理由を説明できる場合は、参考になります。必要なコードをすべて1つのブランチにまとめることができない理由これはXY問題のようです。 http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem –

+0

@TomDalton詳細を説明するために質問を更新しました – proprius

+0

この質問はなぜ下降ですか? – proprius

答えて

1

関数を呼び出すには、単に二回あなたのレポをチェックアウトすることができます。1回支社のため、およびBRANCH2のための1(2回クローニングなし)。
git working on two branches simultaneously」を参照してください。

ます、その後(../branch2/...)他のブランチへの電流経路(/path/to/branch1)のスクリプトを認識させると、相対パスができ

+0

コードは複数のユーザーによって並行して使用されているため、これを行うことはできません。私がブランチを切り替えると、フラグが1でないユーザーも、v2ブランチの結果を得るかもしれません。 – proprius

+1

@proprius私の答えは分かれていません。2つの枝はすでにそこにあります。あなたのコードがそれを知っているなら、どんな種類のブランチ・スイッチングも必要ありません。 – VonC

0

あなたはは、呼び出すためにアクセスコードの存在/の両方のバージョンを持っている必要があります両方のバージョンのコードを動的に処理します。

これを達成するための最も簡単な方法は、VonC's answerのように、両方のバージョンのコードを別々の場所に置くことです。

Pythonはそれが何であるかであるので、しかし、あなた動的に、特定のソースファイルの特定のバージョンを抽出(ダイナミック輸入と一時ファイル、またはexecおよび内部文字列を使用して)その場でそれらをコンパイルし、ひいてはコードを実行する可能性がありプログラムソースの偶然の熟読には現れません。 I これは、困難ではありません(難しくありませんが)、エラーが発生しやすく、セキュリティホールに向く傾向があり、PythonデバッガやIDEのようなものを書かない限り、全体的に恐ろしい方法です。しかし、これはあなたが何をしたいのかである場合、あなたは単にへの問題分解する:

  • をロードしたり、実行し検討および/または特定のコミット(git showgit cat-file -pなど)から特定のファイルを抽出し、動的に
  • ファイルシステムのファイルからのコード、またはメモリの文字列からのコード

最初のGitのプログラミング演習である(と非常に簡単で、git show 1234567:foo.pygit show branch:foo.py:あなたはシェルのリダイレクトやPythonのsubprocessモジュールのいずれかを使用して出力をファイルにリダイレクトすることができます)、およびファイルで行わとき、第二は、中程度の難しさのPythonプログラミングのエクササイズ:the documentationを参照して、特に注意を払うimportlibに注意してください。

関連する問題