当前位置: 首页 > 知识库问答 >
问题:

python - 有什么办法可以和外部人员基于不同的 git 仓库协作吗?

鲁乐
2024-03-13

有什么办法可以和外部人员基于不同的 git 仓库协作吗?

假设有一个仓库 crawler 在我们自己公司的 gitlab 上,我们有一些外包需要给我们的 crawler 添加更多的爬虫脚本和修复爬虫脚本,但是 gitlab 的权限不能给他们,所以就去 github 建了一个 crawler 仓库

但是问题来了 github 和 gitlab 之间怎么同步代码呢?因为两边的不是完全的镜像仓库,因为我们的 gitlab 的 crawler 仓库下,是有 config.yaml 这种配置文件的,里面有数据库的账号密码等等信息

共有2个答案

归浩博
2024-03-13
  1. 一般来说直接同步推就好了,最多就是泄露一些提交信息,问题不大
  2. 配置文件不应该传 git 仓库,应该直接在服务器上配置
曹兴贤
2024-03-13

与外部人员基于不同的 Git 仓库协作,同时保持某些敏感信息(如数据库账号密码)的私密性,可以通过以下几种方法实现:

  1. 使用子模块(Submodules)
    在 Git 中,子模块允许你在一个 Git 仓库中嵌套另一个 Git 仓库。这样,你可以将公共的、非敏感部分的代码放在一个公开的仓库(如 GitHub),而将包含敏感信息的代码放在私有的仓库(如 GitLab)。然后,在公开的仓库中,将私有仓库作为子模块引入。外包人员可以访问并修改公开仓库的代码,但对私有子模块中的内容则无法直接访问。
  2. 使用补丁(Patches)
    你可以将敏感信息从主仓库中分离出来,并在需要的时候通过补丁的方式应用。这样,你可以将不包含敏感信息的代码库公开,而敏感信息则以补丁的形式单独管理。外包人员提交的代码更改可以以补丁形式发送给你,你在自己的环境中应用这些补丁前,先去除或替换其中的敏感信息。
  3. 使用 CI/CD 自动化同步
    你可以设置一个持续集成/持续部署(CI/CD)管道,这个管道定期从 GitHub 上的公共仓库拉取代码,然后将非敏感代码部分合并到你的 GitLab 私有仓库。这可以通过自动化的脚本实现,确保只有非敏感代码被同步。
  4. 使用镜像仓库
    虽然你提到两边的仓库不是完全的镜像仓库,但如果能够控制哪些文件和文件夹被镜像,也是一种可行的方法。通过设置镜像规则,你可以选择性地同步非敏感代码。
  5. 手动同步
    如果以上方法都不适用,你还可以选择手动同步代码。即外包人员将他们的更改提交到 GitHub 上的公共仓库,然后你定期从那里拉取代码,并手动合并到你的 GitLab 仓库中,同时确保在合并过程中不引入任何敏感信息。

在实际操作中,选择哪种方法取决于你的具体需求、团队的熟悉程度以及可用的资源。每种方法都有其优缺点,需要权衡利弊后做出决策。同时,无论选择哪种方法,都应确保遵循最佳的安全实践,防止敏感信息泄露。

 类似资料:
  • 仓库基本管理 初始化一个Git仓库(以/home/gitee/test文件夹为例) $ cd /home/gitee/test #进入git文件夹 $ git init #初始化一个Git仓库 将文件添加到Git的暂存区 $ git add "readme.txt" 注:使用git add -A或git add . 可以提交当前仓库的所有改动。 查看仓库当前文件提

  • 我一直在关注快板5平台和他的文件管理器使用的教程!openFile.eof(),我听说它不好,我很确定它是什么让我的矢量下标超出范围错误。除了它,还有什么我可以使用的吗?另外,你能检查一下我的图层类,以防我的矢量下标超出范围错误吗?我想不出来,我很确定它来自文件管理器,但我不知道。 它仅输出地图的第一行。当我把它改成“而”(标准:::getline(打开文件,行))时,我甚至从未去过标准::cou

  • 问题内容: 我正在尝试从github克隆私有git存储库。我做了一个像这样的Dockerfile: 我在本地使用这个密钥可以很好地使用这个仓库,所以似乎我在码头工人里面缺少东西。 我可能还缺少的一件事是docker内部和外部都指向而不是,但是我不确定是否可以关联。 问题答案: 构建过程的输出是什么? 随机猜测:尝试使用私钥。 如果仍然无法使用,请尝试(添加密钥后);输出应说明发生了什么。

  • 问题内容: 是否可以在不设置/检查任何标志/信号灯/等的情况下终止正在运行的线程? 问题答案: 在Python和任何语言中,突然终止线程通常都是一种糟糕的模式。请考虑以下情况: 线程持有必须正确关闭的关键资源 该线程创建了其他几个必须同时终止的线程。 如果你负担得起的话(如果你要管理自己的线程),处理此问题的一种好方法是有一个标志,每个线程定期检查一次,以查看是否该退出。 例如: 在此代码中,你应

  • 问题内容: 有没有不使用子进程来克隆git存储库的Python方法吗?我准备使用您推荐的任何种类的模块。 问题答案: 有GitPython。之前和内部都没有听说过,它依赖于git可执行文件的位置。此外,他们可能有很多错误。但这可能值得一试。 如何克隆: (这不是很好,我不知道这是否是受支持的方法,但确实有效。)

  • 问题内容: 我观察到外部类可以访问内部类的私有实例变量。这怎么可能?这是演示相同代码的示例代码: 为什么允许这种行为? 问题答案: 内部类只是一种将真正属于原始外部类的功能完全分开的方法。当你有两个要求时,可以使用它们: 如果是在单独的类中实现的,那么外部类中的某些功能将最为清晰。 即使在单独的类中,该功能也与外部类的工作方式紧密相关。 鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外