2017-02-15 192 views
0

背景:我目前正在研究生物信息学项目。我使用PyCharm作为IDE和GitHub进行版本控制。我想知道我的项目结构...PyCharm/GitHub:管理同一个项目的多个存储库的目录

设置:我们有2个仓库:

  1. ,里面所有的文件和目录
  2. 然后我们有一个侧回购的主要回购那托管我们的R-Shiny应用程序/文件/ directores

R-shiny应用程序(2)的GitHub回购是主要回购(1)中的目录之一的镜像。我们将在R-Shiny应用程序上进行持续维护(因此是2次回购的原因)。

我将从此处引用PyCharm项目和GitHub回购(1)和(2)。

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

在我的主要项目(1)目录是它的安全创建一个新的PyCharm项目(2)?
然后将主项目(1)+侧项目(2)推至主项目回购(1)。然后推/拉侧项目(2)到副项目回购(2)

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

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

4.其他..

我想找到一个更好的/标准/实际的方式来处理这种情况。我不是任何手段的新手程序员。但我通过反复试验教会了自己,所以有时候我的方法有点不合常规。

回答

0

我经常与我需要引用其他目录树,同时也是PyCharm项目的项目。通常我只是将该参考添加为Content Root。打开项目1,然后去Preferences > Project > Project Structure > Add Content Root和路径添加到项目2

您现在应该看到这两个项目1和2 View > Tool Window > Project上市。

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

PyCharm是聪明大约在同一项目跟踪多个git的回购协议,见Preferences > Version Control。只是不要将git repos嵌入对方。

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

为了保持项目1和2中同步你有两个选择

  • 使用git子模块通过@Pockets答案的建议,请注意,休闲git的用户可能会与此设置斗争。如果你走这条路线,那么以前的所有步骤都不适用。

  • 将项目1和项目2分开存放。不要在项目1中复制项目2.将项目2子文件夹的路径添加到项目1中的.gitignore。从项目2内容根目录推入并拉入子文件夹。

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

+0

谢谢!我对PyCharms的设置非常熟悉,所以这对我来说很有意义。我已经将项目2添加到内容根目录,但系统链接将很难实现。我有没有管理员权限的Windows ...是否有任何其他方式使用同步(项目1,项目子目录2)(项目2项)? –

+0

我已经编辑了答案,因为符号链接是不是在Windows中的选项。 – mozey

+0

谢谢!我应该提到我正在使用Windows进行开发。我不会是今天能够获得这个解决方案,但我会告诉你,当我已经试过了这一点。 –

0

来处理,这是使用Git子模块,它允许你以包括特定的引用的正确方式提交的其他资料库父库。这样做还有另外一个好处:能够对依赖关系进行版本化:如果在R-shiny中更新某些内容,那些更改不会传播,直到您手动引入这些更改并知道父存储库中的代码支持R中的更改 - 闪亮的东西。 tl; dr:您的设置应该有两个作为自己的回购站,其中R-shiny作为另一个子模块。

my answer here有关如何使用子模块更详尽的解释。

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