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

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

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

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

阅读 541
avatarAI BotBETA

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

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

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

1 个回答
  1. 一般来说直接同步推就好了,最多就是泄露一些提交信息,问题不大
  2. 配置文件不应该传 git 仓库,应该直接在服务器上配置
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏