Enterprise Server 安装通过其 Version Control 服务提供本地化(同时也是集中式)的版本控制。该服务在你需要的地方直接提供版本控制能力——在本地即可,无需寻找或付费购买外部 VCS 管理软件。
通过以这种集中方式定义设计仓库,组织可以完全控制其设计人员能够访问和使用哪些仓库。
Relevance of the information on this page:
全新安装的 Enterprise Server 仅提供一个基于 Git 的设计仓库,用于容纳你所有的 Workspace 设计项目——仅此而已!这避免了与 Enterprise Server 本地 Version Control 服务相关的任何设置与复杂性。你只有一个设计仓库——Versioned Storage——供所有设计人员访问并向其中发布。因此,Workspace 浏览器界面的 VCS 页面将仅用于信息展示——你无法添加新仓库,这个单一的 Git 仓库也无法以任何方式修改或删除。因此,该页面上的信息不适用于你。
如果你是从启用了 SVN 仓库的某个版本或服务器产品升级到 Enterprise Server,那么升级后这些 SVN 仓库仍将保持启用(请确保刷新你的 Altium On-Prem Enterprise Server 许可)。这使你能够继续使用之前(已建立)的设计流程。在这种情况下,你可以继续通过本地 Version Control 服务(仅 SVN)创建仓库,或连接到外部仓库(SVN 或 Git)。因此,该页面上的信息仍与你相关。
Important:请注意,否则
按钮将呈灰色不可用,且无法创建/添加仓库。
主要优势
使用这种集中式 Version Control 服务有两个关键优势:
-
Altium Designer 与 SVN 共享统一的用户与权限管理。当你登录 Enterprise Server 时,Version Control 服务会使用你的会话/凭据。
-
通过 Enterprise Server 定义的仓库(通过 Enterprise Server Workspace 的浏览器界面中的 VCS 页面(Admin – VCS))会在登录时自动同步到 Altium Designer,因此用户无需关心 URL、协议、密码等。只需在 Enterprise Server 上配置一次,并按需共享给目标用户即可。
当为 Enterprise Server 创建新用户时,为该用户定义的 Password 会同时存储在 Enterprise Server 与 SVN 服务中,因为后者无法直接从前者获取密码。
创建仓库
仓库可以通过本地 Version Control 服务创建(仅 SVN),也可以连接外部仓库(SVN 或 Git)。所有仓库会在 Workspace 浏览器界面的 VCS 页面(Admin – VCS)中集中管理,管理内容包括:
-
显示名称、描述以及仓库路径。
-
配置可访问性——哪些特定用户可以访问(对于通过本地 Version Control 服务定义的仓库,则可按组控制)。
-
可用性——集中添加或移除,而不是让每位设计人员各自独立创建并连接仓库。
默认提供两个 Design Repositories,由本地 Version Control 服务提供,分别命名为 DefaultRepository(SVN 仓库)和 Versioned Storage(Git 仓库)。DefaultRepository 仓库不能重命名,但你可以为其添加描述、管理用户访问权限,或按需移除。Versioned Storage 仓库仅用于集成存储 Workspace 项目,不能重命名、共享或移除。
当 Altium Designer 用户登录 Workspace 时,其可用的 Design Repositories 会自动添加到 Preferences 对话框的 Data Management – Design Repositories page 中。请注意,该列表还会包含从此 Preferences 页面手动添加的任何“未受管”仓库。
集中定义组织的 Design Repositories 访问权限。仓库可以是 Enterprise Server 安装内部的(使用本地 Version Control 服务定义),也可以是外部的(使用 Altium Designer 内置 SVN、第三方 SVN 或 Git 服务)。访问控制通过 Workspace 浏览器界面的 VCS 页面执行。当用户登录 Workspace 时,其可用的 Design Repositories 会自动添加到 Preferences 对话框的 Data Management – Design Repositories 页面。
添加仓库
要添加 Design Repository,请点击页面右上角的
按钮。将出现 Add Repository 窗口,用于定义仓库。
只能通过本地 Version Control 服务创建 SVN 类型仓库。可以链接现有(外部)仓库,且这些仓库可以是 SVN 或 Git。
所需属性取决于你是通过本地 Version Control 服务创建新仓库,还是链接到现有的外部仓库:
-
New – 为仓库指定名称和描述。
-
Existing – 除名称和描述外,还需要提供仓库的 URL ,以及用于访问该仓库的有效凭据(User Name、Password)(如需要)。
创建 Enterprise Server 内部仓库时,名称应以字母开头,并且可包含 A-Z、a-z 或 0-9。名称中间允许使用下划线、短横线和空格。不能使用以下词:AUX、COM1-COM9、LPT1-LPT9、CON、NUL 和 PRN。外部仓库没有命名限制。
通过 Enterprise Server 的本地 Version Control 服务创建新的基于 SVN 的 Design Repository,或链接到在 Enterprise Server 外部创建的现有仓库(SVN 或 Git)。
已链接的外部 Design Repository 会在仓库列表中通过其 External 属性被勾选(
)来区分。
要在后续阶段编辑 Design Repository 的属性,点击其对应的 Edit 控件(
)。要移除 Design Repository,点击其对应的 Remove 控件(
)。
仓库列表会按 Name 自动按字母顺序排序:通过 Version Control 服务定义的本地仓库优先列出,其后是外部仓库。基于 Git 的 Versioned Storage 仓库——无法修改或删除——始终显示在列表顶部。
共享仓库
在集中管理 Design Repositories 之后,你需要确保需要访问某个仓库的人员——包括将进行板级设计的设计人员——拥有相应访问权限。这通过共享该仓库(更准确地说是管理其访问权限)来实现。为此,点击该仓库对应的 Share 控件(
)。
将出现 Manage Permissions 窗口,其中包含将仓库共享给其他用户所需的全部控件。
在集中组织 Design Repositories 后,与他人共享只需管理每个仓库的权限即可。
需要注意的事项:
-
对于通过 Enterprise Server 的 Version Control 服务创建的本地仓库(即非外部仓库),其默认权限会将该仓库共享给创建该仓库的用户以及 Administrators 组。两者均拥有完整的读/写访问权限。
-
对于外部仓库,默认不与任何人共享——甚至包括通过界面添加该连接的用户。
-
只有本地仓库(非外部)才能共享给 Enterprise Server 中定义的组,或公开共享。组会列在单个用户之后。
-
在权限方面,当启用 Can Write 选项(
)时,用户/组拥有读/写访问权限;若禁用该选项,则仅有读权限。
Be Aware:共享内部设计仓库时的权限设置并未完全按预期工作。即使某个内部设计仓库本身以只读方式共享给某个服务器用户,该用户仍然能够在该仓库内创建新的 Workspace 项目,并对所创建的对应项目文件夹获得完整的读/写权限。请注意,这种错误行为仅适用于该用户创建的新 Workspace 项目及其文件夹;该用户对仓库中的其他文件夹不具备写权限。
-
要移除某个已共享访问权限的用户/组,点击对应的 Remove 控件(
)。
Sharing a Local Repository with a Workspace User
要将本地(非外部)仓库共享给另一位 Workspace 用户:
-
在 Manage Permissions 窗口中点击 Add User 控件。
-
在弹出的 Add Users 窗口中,在 Select Users to be added 字段输入 Workspace 用户的全名、用户名或邮箱地址,以弹出匹配用户列表。从列表中选择所需用户。可选择多个用户。要移除某个用户,点击其姓名右侧的删除叉号。
-
使用 Permission 字段为用户设置权限。通过下拉菜单在 Read 访问或 Read/Write 访问之间选择。
-
点击
按钮确认添加用户并返回 Manage Permissions 窗口。
-
在 Manage Permissions 窗口中点击
按钮。
要编辑现有用户的权限,请在 Manage Permissions 窗口中使用 Can Write 选项,在读/写访问(启用)与只读访问(禁用)之间切换。
与已定义的组共享本地仓库
如果仓库是通过本地 Version Control 服务创建的(而不是外部仓库),则你还可以与工作区中已定义的组共享。要将本地(非外部)仓库与另一个组共享:
-
在 Manage Permissions 窗口中单击 Add Group 控件。
-
在出现的 Add Groups 窗口中,在 Select Groups to be added 字段开始输入组名,以弹出匹配组的列表。从列表中选择所需的组。可选择多个组。要移除某个组,请单击其名称右侧的删除叉号。
-
使用 Permission 字段为组设置权限。通过下拉菜单在 Read 访问或 Read/Write 访问之间选择。
-
单击
按钮确认添加组并返回 Manage Permissions 窗口。
-
在 Manage Permissions 窗口中单击
按钮。
要编辑现有组的权限,请在 Manage Permissions 窗口中使用 Can Write 选项,在读/写访问(启用)与只读访问(禁用)之间切换。
与所有用户共享本地仓库
如果仓库是通过本地 Version Control 服务创建的(而不是外部仓库),则你还可以将该仓库共享给工作区的所有用户。要将本地(非外部)仓库共享给任何可以登录工作区的人:
-
在 Manage Permissions 窗口中单击 Add Anyone 控件。
-
Anyone 条目将被直接添加到共享实体列表中,并自动以读/写访问方式共享。
-
在 Manage Permissions 窗口中单击
按钮。
要编辑 Anyone 实体的权限,请在 Manage Permissions 窗口中使用 Can Write 选项,在读/写访问(启用)与只读访问(禁用)之间切换。
与工作区用户共享外部仓库
要将外部仓库共享给工作区用户:
-
在 Manage Permissions 窗口中单击 Add User 控件。
-
在出现的 Add Users 窗口中,在 Select Users to be added 字段开始输入工作区用户的全名、用户名或电子邮件地址,以弹出匹配用户列表。从列表中选择所需用户。要移除该用户,请单击其姓名右侧的删除叉号。
在 SVN User 字段中,输入一个已在外部仓库(SVN 或 Git)中注册、因此具备访问权限的名称。通常这会是该用户在仓库中注册的对应名称
-
单击
按钮确认添加用户并返回 Manage Permissions 窗口。单击 Add User 可按上述第 2 步继续添加更多用户。注意在下方第二个示例图中,用户 Barry 已被设置为使用其匹配的仓库名称 BarrySmith,而不是通用的 ServerAdmin 名称。
-
在 Manage Permissions 窗口中单击
按钮。
工作区用户可以映射到外部 SVN 仓库中的任何有效用户名,并且多个工作区用户可以映射到外部 SVN 仓库中的同一个用户名。
-
访问权限本身(只读或读/写)最终由外部仓库的安装配置决定。Enterprise Server 不会影响外部仓库的用户授权,因此无法从 Enterprise Server 端管理这些权限。
-
当从 Altium Designer 访问 Enterprise Server 的外部仓库时(例如创建新项目时),如果之前未进行过设置,可能会要求输入仓库连接凭据。此后对该仓库的后续操作将自动使用这些凭据。
对本地 SVN 设计仓库的外部访问
通过 Enterprise Server 的本地 Version Control Service 创建的 Design Repository,可以使用 SVN 客户端(如 TortoiseSVN)进行访问。访问使用常规网络协议(目前支持 svn://)。可从两个位置获取/复制正确的仓库地址:
-
工作区浏览器界面的 VCS 页面——在目标仓库的 Repository Path 字段中。
从 Enterprise Server 创建的“内部”仓库会显示其相对于 Enterprise Server 的地址路径,即主机 PC 的 localhost 地址。
从 Altium Designer(或任何不在 Enterprise Server 主机 PC 上的应用程序)的角度来看,仓库地址路径基于其主机 PC 的名称。
显示的地址取决于你是从安装了 Enterprise Server 的同一台机器访问仓库(svn://localhost/<RepositoryName>),还是从远程 PC 访问(svn://<ComputerName>/<RepositoryName>,其中 ComputerName 是 Enterprise Server 所在 PC 的名称)。
在你的 Subversion 客户端的仓库浏览功能中使用获取到的地址。首次访问时会打开一个中间的 Authentication 对话框,要求提供有效的连接凭据。输入工作区用户账户的用户名和密码以继续。以下情况下这些凭据有效:
-
该用户账户是在 Enterprise Server 中创建仓库 after 添加的。适用于已创建仓库的用户可在 Enterprise Server PC 的
\ProgramData\Altium\Altium365Data\Repository 文件夹中找到的 passwd 文件中查看——见下文。
-
该仓库已通过服务器 Manage Permissions for <repository name> 窗口中的 Add User 命令添加该用户名的方式共享给该用户账户。这可在 Enterprise Server PC 的
\ProgramData\Altium\Altium365Data\Repository 文件夹中找到的仓库 authz 文件中体现。
浏览通过 Enterprise Server 安装的本地、基于 SVN 的 Version Control 服务创建的 Design Repository 内容。
通过本地 Version Control 服务创建的 Design Repository,其内部数据存储在 \ProgramData\Altium\Altium365Data\Repository 文件夹中的对应子文件夹内(针对 Enterprise Server 的默认安装)。建议不要更改或编辑该文件夹中的文件,除非由 IT 人员出于维护目的进行操作。
Enterprise Server & VCS 用户同步
当为工作区创建新用户时,该用户定义的凭据(User Name 和 Password)会同时存储在 Enterprise Server 的数据库和 Version Control 服务中,因为后者无法直接从前者获取密码。密码以纯文本格式存储在 Version Control 服务中(位于 \ProgramData\Altium\Altium365Data\Repository\passwd 文件)。
该列表中的条目用于在通过 Altium Designer 使用该服务时访问 Enterprise Server SVN 仓库。有时用户的凭据可能未包含在该文件中,例如当在创建第一个 SVN 仓库时工作区用户已存在(而不是相反)。可通过手动将这些用户名/密码组合添加到 passwd 文件来解决,或在工作区中为每个用户配置文件重新输入密码——后者会相应填充 passwd 文件,并且无需直接访问 Enterprise Server PC。
在 Enterprise Server 的默认安装中,Version Control 服务的用户凭据存储在关联的 Passwd 文件中。
删除仓库
要从 Enterprise Server 的 Version Control 服务中删除仓库,请在工作区基于浏览器的界面 VCS 页面上,单击与该仓库关联的 Remove 控件(
)。
请注意,在 Altium Designer 中从
Preferences 对话框的
Data Management – Design Repositories page 移除仓库,只会使该仓库不再被该 Altium Designer 实例使用。它不会从 Enterprise Server 的 Version Control 服务中删除该仓库。如果你从 Enterprise Server 登出再重新登录,该仓库会再次出现在该 Altium Designer 实例的可用仓库列表中。
外部仓库条目可以删除,无论仓库中是否包含任何项目。另一方面,本地仓库(即通过 Enterprise Server 的 Version Control 服务在内部创建的仓库)如果包含一个或多个项目,则无法删除。系统会提示你这一点,你应先移除项目,然后才能继续删除。
即便如此,如果本地仓库不包含项目,它也不会被真正删除,而是会被移动到归档目录(默认 Enterprise Server 安装为 \ProgramData\Altium\Altium365Data\RepositoryDumps)。该仓库将包含在一个 Dump 文件中,并带有唯一 ID 前缀(例如 775f6c22-b9a1-468c-9f1f-4f217bb3be6b_central design repository.dump)。