Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为不同的操作系统分叉git项目_Git_Git Branch_Git Submodules_Branching And Merging - Fatal编程技术网

为不同的操作系统分叉git项目

为不同的操作系统分叉git项目,git,git-branch,git-submodules,branching-and-merging,Git,Git Branch,Git Submodules,Branching And Merging,我有一个OSX应用程序,我自己用python构建。与许多OSX应用程序一样,它也有许多(全部?)依赖项。例如 ./git_repo └── mac (dir) ├── myapp.app (dir) │   ├── Frameworks (dir) │   ├───MacOS (dir) │   ├───Resources (dir) │   │   ├──main.py │   │   ├──lib1.py │   │   ├──lib2

我有一个OSX应用程序,我自己用python构建。与许多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目录。我不需要资源目录或任何其他目录中的任何其他内容。我还将添加mac不需要的Linux特定文件。整体dir结构将比mac结构平坦得多

在那之后,我将转向Windows,使用我为Linux列出的文件,以及一些mac/Linux不需要的特定于Windows的文件

我在这里读过类似的文章,但我无法想象整个目录结构将如何工作。 我有几个选择

  • 在需要时使用单独的git分支并合并/挑选更改(这可能很困难,因为所有3个分支的目录结构都将完全不同)
  • 使用git子模块-已经阅读了相关内容,但不确定应该制作哪些组件-公共项还是附加项
  • 使用单独的存储库-不确定这是否与分支不同
  • 最终,我只需要跟踪所有3个操作系统的主文件的更改,同时保持更改的独立性,而无需在处理特定操作系统/分支时采取重大步骤(例如制作文件等)

    实现这一目标的最佳方式是什么?
    感谢您阅读

    您应该使用
    git子模块
    制作公共部分子模块,并将它们链接到相应的平台分支中。

    如果源文件在不同平台上都是相同的或基本相同的,那么您没有理由使用单独的分支、分支或子模块将它们强制转换为不同的结构re

    实现这一点的最佳方法是将您的项目结构为带有
    setup.py
    的标准setuptools/distutils项目。然后,使用来构建OS X应用程序包,并构建Windows可执行文件

    第二个最好的方法是以一种对您有意义的方式来组织您的项目,并拥有将适当文件复制到位的构建脚本。例如,有一个包含所有Python源代码的
    src/
    文件夹,一个被Git忽略的
    build/
    文件夹,以及一个创建应用程序的
    build mac.sh
    ndle内部
    build/
    并将Python源文件复制到位

    底线是,将所有代码放在一个地方,然后一旦你着手实际构建可再发行的二进制文件,就可以自动将其复制到适当的结构中。在每个版本中为每个平台运行一个脚本要比在一个版本中保持两个或三个相同的repo同步容易得多我会准时的