0

私はPythonで自分で構築したOSXアプリを持っています。多くのOSXアプリと同様に、多くの(すべて?)依存関係があります。例えば...

./git_repo
└── mac (dir)
    ├── myapp.app (dir)
    │   ├── Frameworks (dir)
    │   ├───MacOS (dir)
    │   ├───Resources (dir)
    │   │   ├──main.py
    │   │   ├──lib1.py
    │   │   ├──lib2.py
            ├─img(dir)

ディレクトリ構造はこれよりもはるかに大きく、各ディレクトリに多くのファイルがありますが、アイデアは得られます

私の最初のフォークはLinux用で、main.py、lib1.py、lib2.pyとimgディレクトリが必要です。Resourcesディレクトリやその他のディレクトリには他に何も必要ありません。また、Macに必要のないLinux固有のファイルも追加します。全体的なdir構造は、mac構造よりもはるかにフラットになります。

その後、Linux用にリストしたファイルと、mac/linuxには不要ないくつかのWindows固有のファイルを使用してWindows用にフォークします。

ここで同様のスレッドを読みましたが、全体的なディレクトリ構造がどのように機能するかを視覚化できません。いくつかのオプションがあります。

  1. 個別のgitブランチを使用し、必要に応じて変更をマージ/チェリーピックします(3つすべてのディレクトリ構造が完全に異なるため、これは難しい場合があります)
  2. gitサブモジュールを使用してください-これについて読んでいますが、サブモジュールを作成する必要があるコンポーネントがわかりません-一般的なアイテム、または追加機能?
  3. 別のリポジトリを使用する-これがブランチと異なるかどうかわからない

最終的には、変更を個別に保ちながら、特定のOS /ブランチで作業するときに大きな手順を踏むことなく(ファイルの作成など)、3つのOSすべてのメインファイルの変更を追跡する必要があります。

これを達成するための最良の方法は何ですか?読んでくれてありがとう

4

2 に答える 2

1

ソースファイルがプラットフォーム間ですべてまたはほとんど同じである場合、それらを別の構造に強制するために、別々のブランチ、フォーク、またはサブモジュールを管理する必要がある理由はありません。

これを実行する最良の方法は、プロジェクトを標準のsetuptools/distutilsプロジェクトとして構造化することsetup.pyです。次に、py2app拡張機能を使用してOS Xアプリケーションバンドルをビルドし、py2exe拡張機能を使用してWindows実行可能ファイルをビルドします。

次善の方法は、自分にとって意味のある方法でプロジェクトを構造化し、適切なファイルを適切な場所にコピーするビルドスクリプトを用意することです。たとえば、src/すべてのPythonソースを含むbuild/フォルダー、Gitによって無視されるフォルダー、およびbuild-mac.sh内部にアプリケーションバンドルを作成しbuild/、Pythonソースファイルを所定の場所にコピーするフォルダーがあります。

要するに、すべてのコードを1つの場所に保持し、実際に再配布可能なバイナリを構築することに取り掛かったら、適切な構造に自動的にコピーする方法があります。2つまたは3つの他の点では同一のリポジトリの同期を常に維持するよりも、リリースごとにプラットフォームごとに1つのスクリプトを実行する方がはるかに簡単です。

于 2013-02-07T10:11:14.867 に答える
0

共通部分のサブモジュールを使用git-submoduleおよび作成し、適切なプラットフォーム ブランチにリンクする必要があります。

于 2013-02-07T08:38:36.030 に答える