如何在 Foundry 中将代码从一个代码库复制到另一个代码库?

How can I copy code from one Code Repository to another in Foundry?

我想将一个代码存储库中的大量代码移动到另一个存储库,但我真的不想逐个文件复制粘贴。我知道存储库是基于 git 的,但我到底需要复制什么?

例如

# Copy code from RepoA
/transforms-python/src/myproject/**/*.py

# to RepoB
/transforms-python/src/myproject/**/*.py

在深入了解细节之前,值得反思一下为什么可能需要将代码从一个代码存储库复制到另一个代码存储库。例如:

  • 如果您需要移动代码存储库,请按菜单栏中的 文件 > 移动。如果您将代码存储库移出当前项目,您将需要更新您的 Foundry 项目引用。
  • 如果目的是利用另一个代码存储库中的 user-written 函数(例如一组清理函数),那么您应该考虑编写一个库。可以通过在代码库启动画面中选择库模板来创建库,并且可以在所有代码库中使用,而无需多次复制代码。

现在假设复制代码的原因是好的,并且您正在尝试将代码从 RepoA 复制到 RepoB。

这是前面的整个终端流程,下面是解释它的步骤:

# clone (step 1 to 3)
$ git clone https://repoA
$ git clone https://repoB

# copy files (step 4) 
# stolen from https://unix.stackexchange.com/questions/83593/copy-specific-file-type-keeping-the-folder-structure )
$ find . -name '*.py' -exec cp --parents \{\} /target \;

# edit your outputs (step 5) 
# this line opens a folder in sublime text
$ subl -a repoB/

# after saving commit and push (step 6)
git commit -a -m "copied code"
git push origin master

Step-by-step 说明:

  1. 在 Foundry 中,创建一个名为 RepoB 的新代码存储库
  2. 克隆(https://git-scm.com/docs/git-clone) RepoA to your local machine using git clone in a command line interface (CLI) (https://www.codecademy.com/article/command-line-interface
    1. 您需要通过按代码存储库
    2. 菜单栏中的克隆按钮来获取远程URL
    3. 或者,如果您需要复制的文件数量很少,请考虑 copy-pasting 代码存储库中的每个文件 UI
  3. 在命令行界面 (CLI) (https://www.codecademy.com/article/command-line-interface)
  4. 中使用 git 克隆将 RepoB 克隆到本地计算机
  5. 仅将生成数据集的文件从 RepoA 文件夹复制到本地计算机上的 RepoB 文件夹
    1. 您不应将任何隐藏文件或 non-src 文件从 repoA 复制到 repoB(这包括但不限于:meta.yaml、build.gradle、templateConfig.json、gradlew 等)。
      1. 如果您不确定哪些文件算作隐藏文件,请转到您新创建的存储库,展开文件树以便您可以看到存储库中的所有文件和文件夹,然后使用齿轮图标打开“显示隐藏文件”在分支选择器旁边。当您打开该开关时,隐藏文件将显示出来,并且文件名颜色比 non-regular 个文件浅。
  6. 更新本地计算机上 RepoB 中的数据集输出路径
    1. 如果数据集的输出路径没有改变,那么您将 运行 遇到一个问题,其中 CI 由于数据集被 RepoA“拥有”而在 RepoB 中失败。这将需要复杂的手动修复。
  7. 添加 (https://git-scm.com/docs/git-add), commit (https://git-scm.com/docs/git-commit), and push (https://git-scm.com/docs/git-push) all changes to RepoB to the remote branch (https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches)

需要考虑的其他事项:

  • 如果您的代码依赖于包,那么您应该转到代码存储库 left-hand 侧栏中的库部分并手动添加相关包
  • 如果 RepoB 与 RepoA 在不同的项目中,则您还需要通过按数据集输入语句旁边的灯泡图标(或在项目详细信息中添加引用)来引用新项目中的所有输入数据集指南针中的页面)
  • 如果您的代码使用自定义 Spark 配置文件,那么您还需要在“代码存储库”选项卡中配置这些配置文件 设置 > Spark