【问题标题】:PyCharm/GitHub: Managing the directories of multiple repositories for the same projectPyCharm/GitHub:管理同一项目的多个存储库的目录
【发布时间】:2023-03-29 13:54:01
【问题描述】:

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

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

  1. 包含我们所有文件和目录的主存储库
  2. 然后我们有一个托管我们的 R-Shiny 应用程序/文件/目录的辅助存储库

R-shiny 应用程序 (2) 的 GitHub 存储库是主存储库 (1) 中目录之一的镜像。我们将对 R-Shiny 应用程序进行持续维护(因此需要 2 个 repos)。

从这里开始,我将引用 PyCharm 项目和 GitHub 存储库作为 (1) 和 (2)。

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

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

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

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

4.其他..

我想找到一种更好/标准/实用的方法来处理这种情况。无论如何,我都不是新手程序员。但是我通过反复试验自学了很多东西,所以有时我的方法有点不合常规。

【问题讨论】:

    标签: git github directory repository pycharm


    【解决方案1】:

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

    请参阅my answer here,了解有关如何使用子模块的更详尽说明。

    请注意:您说这是一个生物信息学项目,因此需要能够查看您的代码的人似乎不一定是最精通 Git 的用户 - 包含脚本可能有助于他们获取周围。

    【讨论】:

      【解决方案2】:

      我经常处理需要引用其他目录树的项目,这些目录树也是 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 保存在单独的存储库中。不要在项目 1 中复制项目 2。将项目 2 子文件夹的路径添加到项目 1 中的 .gitignore。从项目 2 内容根目录推送并拉入子文件夹。

      • 在 1 中复制项目 2 个文件。使用 PyCharm Preferences > Build, Execution, Deployment > DeploymentType > Local or mounted folder

      【讨论】:

      • 谢谢!我对 PyCharms 设置非常熟悉,所以这一切对我来说都很有意义。我已将项目 2 添加到内容根目录,但系统链接将难以实现。我有没有管理员权限的 Windows... 有没有其他方法可以将(项目 2)与(项目 1,子目录项目 2)同步?
      • 我已经编辑了答案,因为符号链接不是 Windows 上的选项。
      • 谢谢!我应该提到我正在使用 Windows 进行开发。我今天无法找到此解决方案,但我会在尝试后通知您。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2021-04-17
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多