背景:我目前正在从事生物信息学项目。我使用PyCharm作为IDE,使用GitHub进行版本控制。我想知道我的项目结构......
设置:我们有2个存储库:
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. 其他..
我想找到一种更好/标准/实用的方法来应对这种情况。无论如何,我不是新手程序员。但是我通过反复试验教了很多自己,所以有时我的方法有点不同寻常。
答案 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 > Deployment
和Type > Local or mounted folder
答案 1 :(得分:0)
处理此问题的正确方法是使用Git子模块,它允许您在父存储库中包含对另一个存储库的特定提交的引用。这具有能够对依赖项进行版本化的额外好处:如果您在R-shiny中更新某些内容,那么在您手动引入这些更改并且知道父存储库中的代码支持R中的更改之前,这些更改不会传播。 - 很棒的东西。 tl; dr:你的设置应该既有自己的回购,又有R-shiny作为另一个的子模块。
有关如何使用子模块的详细说明,请参阅my answer here。
警告:你说这是一个生物信息学项目,所以似乎很可能需要能够查看你的代码的人可能不一定是最熟练的Git用户 - 它可能有助于包含脚本他们到处走走。