使用版本控制管理您的管道项目
您可以使用版本控制来管理管道项目的开发,并跟踪更改。
使用版本控制时,您可以在设计期间提交项目的版本。这使您可以查看项目两个版本之间的更改。您还可以使用分支策略开发您的数据项目。这使您可以在每个工作区或分支中处理项目的隔离版本。工作区可以由多个用户共享。然后,您可以将工作区中的更改合并到主分支,以便部署到生产环境。
GitHub 用作版本控制的提供程序。该实现遵循共享储存库模型。
-
不支持 GitHub Enterprise Cloud 和 GitHub Enterprise Server。
-
有关共享储存库模型的更多信息,请参阅 关于协作开发模型。
-
有关 Git 和 GitHub 的更多信息,请参阅 关于 GitHub 和 Git。
-
GitHub 安全注意事项
Qlik Talend Cloud 支持 HTTPS 安全协议和个人访问令牌 (PAT),这是 GitHub 的默认身份验证模式。有关更多信息,请参阅 关于 GitHub 身份验证。
入门
-
在 GitHub 中创建一个用户,租户可以使用该用户访问 GitHub。管理员可能已经为您创建了此用户。
该用户必须具有以下范围:
-
repo
-
read:org
-
read:user
-
read:project
-
-
您需要对计划更改的储存库具有写入权限。
-
您必须创建 GitHub 个人访问令牌(经典)。不支持细粒度的个人访问令牌。
有关更多信息,请参阅 GitHub 文档:管理您的个人访问令牌。
-
在 GitHub 配置中,组织是强制性的。
-
您需要在项目所在的空间中具有“可编辑”角色才能执行版本控制操作。
-
在开始使用版本控制之前,您必须设置配置以使用您创建的 GitHub 用户连接到 GitHub。
-
设置与 GitHub 的连接后,您可以将项目连接到储存库。
设置 GitHub 配置
所有希望使用版本控制的用户都必须设置配置,以使用 GitHub 用户帐户连接到 GitHub。
GitHub 连接

您可以在 管道项目 中或在您的用户配置文件设置中配置 GitHub。确保您已根据 入门 进行了准备。
要在 管道项目 中配置 GitHub:
-
单击
,然后单击 GitHub 配置。 -
使用您的组织和 入门 中描述的 GitHub 个人访问令牌设置身份验证。
-
单击 确定。
您现在可以将项目连接到储存库。
将项目连接到储存库
在开始使用版本控制之前,您必须将项目与储存库连接。确保您已设置与 GitHub 的连接。
将项目连接到版本控制。

-
在 管道项目 中,单击项目上的 ...,然后选择 连接到版本控制。
-
选择要与项目关联的储存库。
-
添加基本目录路径。
如果要连接到 GitHub 中的现有项目,则必须使用相同的路径。
-
您可以选择在连接后提交项目并将项目推送到远程储存库。输入提交消息。
如果不提交并推送,则会在工作区中创建一个主分支,但不会在远程储存库中创建。
-
单击 连接。
项目现已连接到选定的储存库。这在项目卡底部通过
、储存库名称和当前分支来指示。
打开项目时,标题行现在将包含一个带有版本控制选项的 GitHub 菜单。项目名称也将附加当前分支的名称。
使用版本控制开发项目
您可以通过不同的方法使用版本控制:
-
直接在主分支上工作。这主要适用于希望跟踪更改的项目中的单个开发人员,但也可以由同步工作的一组开发人员使用。
-
使用分支策略工作,多个开发人员可以在其中做出贡献。您还可以创建分支以将新功能或更改相互隔离。
单开发人员项目的简化工作流
您可以直接在项目的主分支上工作。这种方法更简单,包含的操作更少,但仍然可以让您跟踪更改。如果有多个开发人员,他们需要注意保持同步。
当您对项目进行了要应用的更改时,只需执行 提交并推送 即可。
多开发人员项目的工作流
如果有多个开发人员在处理一个项目,或者如果您想隔离更改,则可以使用此工作流。这涉及创建一个可以与其他用户共享的开发分支。通过此工作流,开发人员可以跟踪彼此的更改,并决定何时将更改合并到主分支。
使用版本控制的多开发人员项目的工作流

-
创建新分支
从主分支创建一个新的开发分支。您可以与更多用户共享该分支。
-
开发
在项目中进行所有必需的更改。
信息注释数据库模式和连接不在版本控制中维护。 -
应用远程更改
将另一个分支的远程更改应用到您的工作区,以确保您了解另一个分支的最新更改。这有助于避免或减轻冲突的更改。
如果您有两个包含可能冲突的更改的分支,一种解决方法是:
-
将更改提交到两个工作区。
-
将两个分支合并到主分支。
-
再次应用远程更改。
-
-
提交并推送
将您的更改提交并推送到开发分支。所有对象都将被推送,因此在提交之前验证您的项目是一个好主意。
-
创建拉取请求并合并
当您准备好开发时,就该将工作区中的更改合并到主分支了。
您可以在项目版本控制中创建拉取请求,但合并必须在 GitHub 中执行,您还可以在其中设置审批。有关更多信息,请参阅 GitHub 拉取请求文档
创建新分支
-
在项目中,单击 GitHub 并选择 创建新分支。
项目必须连接到版本控制。您还必须具有对项目目标连接所在空间的权限。
-
选择从主分支创建分支。
-
输入分支的名称。
-
在 所有模式的分支前缀 中设置要添加到项目中所有模式的前缀。这允许对所有模式进行唯一命名,以避免命名冲突。
-
单击 创建
从主分支创建一个新分支,并从储存库中检出。该分支包含项目的新版本,所有任务的状态均为“新建”。也就是说,它们尚未准备好,也不包含任何数据。
应用远程更改
您可以将远程储存库中的更改应用到您的工作区。这可能是在 Qlik Cloud 集成版本控制之外创建的更改,例如在 GitHub 中或通过其他工具创建的更改。这有助于您在想要将更改提交并推送到分支时避免冲突。
-
在项目中,单击 GitHub 并选择 应用远程更改。
如果发现更改,将显示 将远程更改应用到工作区 对话框。
-
您现在可以选择要应用更改的任务并检查更改。对于每个更改,您可以选择要使用的版本:远程版本或工作区中的版本。
对项目和导入项目之间不同的映射连接进行任何所需的更改。
例如,导入的项目可能使用名为 SQL1 的源连接,而此项目使用名为 SQL2 的类似连接。在这种情况下,请在 为原始版本中添加的任务设置连接 中将导入的连接映射到 SQL2。
如果更改包括跨项目源,并且引用的项目处于版本控制之下,则每个跨项目源都有一个 分支 选择器。选择要使用的分支。如果引用的项目不受版本控制,则不显示分支选择器。
信息注释选择要映射的连接时,您可以创建新的数据库连接,但不能创建 SaaS 应用程序连接。 -
单击 应用远程更改
如果更改包括新的数据任务,则必须添加源连接和目标连接。
提交并推送
您可以将更改提交并推送到分支。由于未应用到工作区的远程更改可能会被覆盖,因此您应在提交和推送之前执行 应用远程更改。
-
在项目中,单击 GitHub 并选择 提交并推送。
如果发现更改,将显示 提交并推送 对话框。
-
添加可以帮助您跟踪更改内容的提交消息。
-
单击 提交并推送
创建拉取请求
创建拉取请求 (PR) 以将工作区中的更改合并到主分支。
-
在项目中,单击项目上的 GitHub 并选择 创建拉取请求。
将显示 创建拉取请求 对话框。
-
添加拉取请求的标题和描述。
您还可以选择在创建后在 GitHub 中打开拉取请求。
-
单击 创建拉取请求。
您现在可以为拉取请求设置审批并在 GitHub 中执行合并。
删除分支
将更改合并到主分支后,您可以删除分支。
-
在项目中,单击要删除的分支,然后选择 删除分支。
您也可以选择在版本控制中删除远程分支。
如果有未提交的更改,您需要确认在删除分支时这些更改将丢失。
删除项目的版本控制
您可以断开项目与版本控制的连接。如果存在现有分支,则必须在断开项目连接之前将其删除。
-
在 管道项目 中,单击要断开连接的项目上的 ...,然后选择 断开与 GitHub 的连接。
从版本控制导入项目
您可以从版本控制导入项目,例如,如果您想查看其他开发人员的项目或在项目上进行协作。从版本控制导入项目还可以与其他空间或租户共享项目。您可以与同一租户上的不同空间或另一个租户共享项目的版本。当您想要创建两个环境(例如一个用于开发,一个用于生产)时,这很有用。"
导入项目之前
在开始导入项目之前:
-
如果要导入到新租户或空间,请创建所需的所有新连接。
-
如果项目使用租户或空间上尚不存在的 SaaS 应用程序连接,则必须在开始导入之前创建连接并生成元数据。
-
如果要导入跨项目管道,则必须首先导入上游项目。
导入项目
如果项目使用其他项目中的任务,则必须映射项目和任务,除非空间和项目的名称相同。
-
在 Data Integration > 项目 中,单击 新建 并选择 从版本控制导入项目。
-
选择储存库,然后选择分支。
如果需要,选择基本目录路径,然后单击 显示项目。
从列表中选择要导入的项目。
单击 下一步。
-
为新项目设置 项目属性。
您必须在 空间 中选择要将项目添加到的空间。
在 数据平台 中,您可以更改项目的数据平台以及与数据平台的连接。
如果您从另一个租户导入了项目,或者在上一步中更改了数据平台,则需要更改 连接。
您可以更改与暂存区的连接。如果您从另一个租户导入了项目,或者在某些情况下,如果您在上一步中更改了数据平台,则需要执行此操作。
单击 下一步。
-
为新项目设置 默认项目设置。
您可以在 所有模式的前缀 中为项目中创建的数据模式添加前缀。当导入的项目与导出的项目位于同一云数据仓库中时,这很有用。
您还可以在 数据库名称 中设置默认名称。对于 Snowflake 项目,您可以设置默认的 数据仓库名称,对于 Databricks 项目,您可以设置默认的 目录名称。您可以将项目默认名称用于所有任务类型,或将名称设置为默认名称或为每种任务类型设置自定义名称。
单击 下一步。
-
设置 连接和任务设置。
您可以替换导入的源连接或跨项目源。如果您从另一个租户导入了项目,则需要执行此操作。
将跨项目源映射到受版本控制的项目时,可以使用 分支 选择器。选择要使用的引用项目的分支。如果引用的项目不受版本控制,则不显示分支选择器。如果跨项目源映射到非主分支,则分支名称将显示在项目名称旁边的括号中。
在 可选任务设置 中,您还可以更改在原始项目中被覆盖的任务设置。
-
准备就绪后,单击 导入。
该项目将添加到 数据集成 主页。
处理从版本控制导入的项目
您的工作方式与常规版本控制项目相同,但有一些区别:
-
您只能切换到主分支,或切换到从版本控制导入的另一个分支。
-
如果您从分支导入,则主分支将为空。
-
删除项目不会删除远程版本。
安全注意事项
确保在 Qlik Talend Data Integration 和 GitHub 之间保持同步的安全配置。
-
在 Qlik Talend Data Integration 中,权限基于可能包含多个项目的空间。在 GitHub 中,权限基于可能也包含多个项目的储存库。最佳实践是将它们对齐,并将一个空间中的所有项目连接到同一个储存库。
-
请记住,Qlik Talend Data Integration 和 GitHub 为用户使用不同的权限和角色。
最佳实践
以下是使用版本控制处理项目时的一些通用最佳实践。
-
添加一个描述 GitHub 中储存库的 README 文件。有关更多信息,请参阅 关于 README。
如果您从一个空储存库开始,Qlik Talend Cloud 版本控制将自动添加一个空的 README.md 文件。
-
通常,您应该让 Qlik Talend Cloud 版本控制管理 GitHub 储存库。
-
仅提交有效且经过测试可运行的项目。
如果您添加包含尚未准备或转换的登陆或注册数据任务的项目,则尚未包含源列。在准备和转换任务时会添加源列。
-
当您为复制项目创建分支时,您应该注意分支默认使用相同的目标。这意味着在分支中运行任务可能会覆盖主版本的数据。为避免数据丢失,请更改分支中的目标设置,使其不与主版本冲突。
-
创建分支时,可能存在尚未应用到工作区的远程更改。在创建分支之前或之后应用远程更改,除非您想放弃远程更改。
-
在两个不同的分支中对同一数据集进行更改可能会导致难以解决的合并冲突以及数据集的重新创建。
信息注释将数据集添加到任务时,它会获得一个内部标识符。内部标识符用于允许在管道中进行无缝重命名和其他元数据操作。在单独的项目或分支中创建相同的数据集时,内部标识符将不同,这可能会在合并两个分支时引起冲突。这可能会导致准备过程删除并重新创建数据集,即使它具有相同的名称。
在分支中工作
您可以创建一个项目,对其进行设计,并在准备就绪后使用 MAIN 分支将其部署到生产环境。MAIN 上的版本对应于您的生产管道。在首次部署之后,您绝不应直接编辑 MAIN 分支。
任何时候开发人员想要在项目中进行新更改(例如添加功能或纠正错误)时,都需要创建一个新分支。
开发人员可以根据其开发需求创建任意数量的分支
-
为分支使用模式前缀,以避免在进行更改时发生数据库冲突。
-
在分支中,开发人员可以进行任意数量的更改,并根据需要进行多次提交和推送。建议将每个更改隔离在一个独立的、单独的提交中。例如,如果您对转换任务进行了更改,该更改也会影响数据集市,请确保在单个提交中包含这两个更改
-
所有团队成员应随时使用 应用远程更改 以确保其 MAIN 是最新的,尤其是在提交其更改之前。
当开发人员在他们的分支中完成工作后,他们可以创建一个拉取请求以进行同行评审。
经过其他团队成员的审查和批准后,您可以将拉取请求与 GitHub 中的 MAIN 版本合并。
最后,在项目中使用 应用远程更改 将批准的分支更改拉回 MAIN 分支(生产)。
在空间中工作
对于更大和关键的部署,建议使用专用的开发和生产空间来隔离更改并确保管道完整性。在每个空间中为源和目标使用专用的数据连接。
-
生产
MAIN 分支反映了生产环境中的内容。这意味着项目只有一个 MAIN 版本。
生产环境隔离在专用的数据空间中,例如 PROD。专用连接分配给生产空间。
不会直接在生产空间/MAIN 分支中进行任何更改。所有更改都在具有专用连接的其他空间中使用分支进行。
您可以重用 GitHub 中现有项目的 MAIN 版本。创建一个与 GitHub 中现有项目同名的空项目。这将检索 MAIN 分支上可用的最新版本以开始编辑。
用户创建一个新分支,进行更改,创建拉取请求,合并,然后拉回 MAIN/生产环境。
-
开发
开发人员可以将他们的更改隔离在专用的数据空间中,例如 DEV。专用连接分配给 DEV 空间。
使用分支隔离更改,通常每个开发人员一个分支。创建分支时使用模式前缀,以避免在进行更改时发生数据库冲突。
-
审查/质量验收
审查者被授予访问开发空间和连接的权限,以:
-
在 Qlik Talend Cloud 中打开并测试项目分支。
-
批准拉取请求以继续在 GitHub 中合并。
-
在可以将批准的更改拉回 MAIN/生产环境时通知团队成员。
-
将批准的更改部署回 MAIN/生产空间时,必须将连接重新分配给生产空间连接。
限制
-
以 Qlik Cloud (QVD) 为目标的项目不支持版本控制。
-
如果存在分支,则无法断开连接或删除使用版本控制的项目。必须先删除分支,然后才能断开连接或删除项目。
-
无法重命名使用版本控制的项目。
-
删除租户时,不会删除在 GitHub 中使用版本控制存储的对象。您需要手动删除这些对象。
-
如果一个储存库被许多项目使用,或者包含许多未存储在 Qlik Talend Data Integration 中的文件,则性能可能会下降。
-
数据库模式和连接不在版本控制中维护。
-
不支持 GitHub 细粒度个人访问令牌。
-
每个储存库中只有一个项目可以使用一个分支(主分支除外),即使两个项目位于同一个储存库中也是如此。
-
无法从使用不同目标平台的项目应用远程更改。例如,如果您将更改提交到 Snowflake 上的项目,则无法将更改应用到 Databricks 项目。