PyCharm / GitHub:管理同一项目的多个存储库的目录

时间:2017-02-15 17:02:12

标签: git github directory repository pycharm

背景:我目前正在从事生物信息学项目。我使用PyCharm作为IDE,使用GitHub进行版本控制。我想知道我的项目结构......

设置:我们有2个存储库:

  1. 包含我们所有文件和目录的主要仓库
  2. 然后我们有一个侧面回购托管我们的R-Shiny应用程序/文件/主管
  3. R-shiny app(2)的GitHub repo是主repo(1)中某个目录的镜像。我们将对R-Shiny应用程序进行持续维护(因此有2个回购的原因)。

    我将从此向前引用PyCharm项目和GitHub仓库为(1)和(2)。

    问题:处理这种情况的最佳方法是什么?

      

    1。在我的主项目(1)目录中创建新的PyCharm项目是否安全(2)?
      然后将主项目(1)+侧项目(2)推/拉到主项目仓库(1)。然后推/拉侧项目(2)到侧项目回购(2)

         

    2. 为两个PyCharm项目创建单独的目录   我必须从(2)复制/粘贴我的目录并将它们适当地粘贴到(1)中   然后分别推/拉项目(1)和项目(2)。

         

    3. 或者我应该将所有内容合并到一个项目/存储库中,然后为R-Shiny应用程序/目录创建一个单独的分支?我不知道这是可行的还是实际的。

         

    4. 其他..

    我想找到一种更好/标准/实用的方法来应对这种情况。无论如何,我不是新手程序员。但是我通过反复试验教了很多自己,所以有时我的方法有点不同寻常。

2 个答案:

答案 0 :(得分:0)

我经常处理需要引用其他目录树的项目,这些目录树也是PyCharm项目。通常我只是将引用添加为Content Root。打开项目1,然后转到Preferences > Project > Project Structure > Add Content Root并添加项目2的路径。

您现在应该看到View > Tool Window > Project中列出的项目1和2。

排除项目1的子目录(右键单击Mark Directory As > Excluded),这将阻止该位置的类,文件和符号在Navigate搜索中显示为重复项。

PyCharm非常聪明地跟踪同一项目中的多个git回购,请参阅Preferences > Version Control。只是不要把git repos嵌在彼此里面。

要比较项目1和2之间的最新更改,请在项目工具窗口中选择文件夹,右键单击并选择Compare Directories

要使项目1和2保持同步,您有几个选项

  • 使用@Pockets答案建议的git子模块,请注意,休闲的git用户可能会对此设置感到困扰。如果你走这条路线,那么之前的所有步骤都不适用。

  • 将项目1和2保存在单独的回购中。不要在项目内复制项目2.将项目2子文件夹的路径添加到项目中的.gitignore 1.从项目2内容根推送并拉入子文件夹。

  • 重复项目2文件1.使用PyCharm Preferences > Build, Execution, Deployment > DeploymentType > Local or mounted folder

答案 1 :(得分:0)

处理此问题的正确方法是使用Git子模块,它允许您在父存储库中包含对另一个存储库的特定提交的引用。这具有能够对依赖项进行版本化的额外好处:如果您在R-shiny中更新某些内容,那么在您手动引入这些更改并且知道父存储库中的代码支持R中的更改之前,这些更改不会传播。 - 很棒的东西。 tl; dr:你的设置应该既有自己的回购,又有R-shiny作为另一个的子模块。

有关如何使用子模块的详细说明,请参阅my answer here

警告:你说这是一个生物信息学项目,所以似乎很可能需要能够查看你的代码的人可能不一定是最熟练的Git用户 - 它可能有助于包含脚本他们到处走走。