Source Code Management--(SCM in gitlab)

2023-12-06 03:45

本文主要是介绍Source Code Management--(SCM in gitlab),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Source Code Management

Introduction and how you can help

The Source Code Management direction page belongs to the Source Code group of the Create stage, and is maintained by Derek Ferguson, who can be reached at dferguson@gitlab.com.

This direction is a work in progress, and everyone can contribute. Sharing your feedback directly is the best way to contribute to our strategy and vision. Please, comment and contribute in the linked issues below, or to any other issues or epics, or raise an issue yourself in gitlab-org/gitlab if you don't find existing feedback that matches your thoughts.

源代码管理

简介以及如何提供帮助

“源代码管理”方向页面属于“创建”阶段的“源代码”组,由 Derek Ferguson 维护,可通过 dferguson@gitlab.com 联系到他。

这个方向是一个正在进行的工作,每个人都可以做出贡献。直接分享您的反馈是为我们的战略和愿景做出贡献的最佳方式。请在下面的链接问题或任何其他问题史诗中发表评论和贡献,或者如果您没有找到与您的想法相匹配的现有反馈,请在 gitlab-org/gitlab 中自行提出问题。

Strategy and Themes

Source code management (SCM) is the foundation of an organization's software development practice.

Building great software depends on teams working well together. Teams can rarely be divided into areas of complete independence. As cross-functional security, compliance, and growth teams are formed, or new services and libraries are created, effective coordination and collaboration are essential.

To achieve this, teams need to protect production while making it easy for everyone to contribute. Source Code Management provides the controls to define the rules and workflows for this purpose:

  • Who has the rights to view or change the code (visibility; members; permissions; merge request approvals; forking and mirroring)
  • Who owns the code and is responsible for it and thus has the right to approve changes to it (codeowners; merge request approvals)
  • Which quality tests must be passed before changes can be applied (coverage checks; security checks)
  • Which branches need to be protected because they influence production (default branch; protected branches; push rules)

战略和主题

源代码管理 (SCM) 是组织软件开发实践的基础。

构建出色的软件取决于团队的良好合作。团队很少可以划分为完全独立的区域。随着跨职能安全、合规性和增长团队的形成,或者新服务和库的创建,有效的协调和协作至关重要。

为了实现这一目标,团队需要保护生产,同时让每个人都能轻松做出贡献。源代码管理提供了用于定义规则和工作流的控件,以实现此目的:

  • 谁有权查看或更改代码(可见性;成员;权限;合并请求批准;分叉和镜像)
  • 谁拥有代码并对其负责,因此有权批准对代码的更改(代码所有者;合并请求审批)
  • 在应用更改之前必须通过哪些质量测试(覆盖率检查;安全检查)
  • 哪些分支需要保护,因为它们会影响生产(默认分支;受保护的树枝;推送规则)
Themes

While the principles have been around for half a century, SCM is not without challenges. SCM needs to address a large set of requirements that are partly contradicting:

  • encourage sound development practices
  • but also, be flexible enough to adjust to varying workflows
  • be intuitive
  • but also, be secure and ensure compliance
  • be fast and reliable
  • but easy to manage
主题

虽然这些原则已经存在了半个世纪,但 SCM 并非没有挑战。SCM 需要解决大量部分矛盾的需求:

  • 鼓励健全的发展实践
  • 而且,要足够灵活,以适应不同的工作流程
  • 要直观
  • 而且,要确保安全并确保合规性
  • 快速可靠
  • 但易于管理

Git is the leading Version Control System (VCS) and is loved by developers. It excels at tracking changes in source code and makes it easy and transparent to merge changes from different developers into one code base. GitLab's source code management builds on top of Git adding functionality that aims to address the above requirements. For example, access control to code repositories or requiring code reviews before merging changes. Source code management and the create stage represent the most popular features in GitLab.

Git 是领先的版本控制系统 (VCS),深受开发人员的喜爱。它擅长跟踪源代码中的更改,并使将来自不同开发人员的更改合并到一个代码库中变得简单透明。GitLab 的源代码管理建立在 Git 之上,添加了旨在满足上述要求的功能。例如,对代码存储库的访问控制或要求在合并更改之前进行代码审查。源代码管理和创建阶段代表了 GitLab 中最受欢迎的功能。

Yet, despite their appeal, neither Git nor GitLab SCM are perfect. Here are the current main shortcomings:

  • GitLab's SCM UX, has shown to be partly unintuitive or uninformative. For instance, controls to enforce rules are hard to discover and understand.
  • Git is not particularly good at working with binary files such as graphics or video content common in game development. With those media files, Git cannot interpret change on a granular level as it does with text files. So, it needs to store full copies of every new version of a media file.
  • While Git Large File Storage (LFS) aims to address this, the Git process - as helpful as it is for developers - appears complex from a content creator's perspective. Especially as they cannot benefit in the same way from Git as developers do for the lack of diffability of media files.
  • Finally, Git gets slow when repositories become exceptionally large (even if they do not contain binary files). While not common such so-called monorepos are used in several large tech companies. Partial clone addresses some of the issues.

然而,尽管它们很有吸引力,但 Git 和 GitLab SCM 都不是完美的。以下是目前的主要缺点:

  • GitLab 的 SCM UX 已被证明部分不直观或信息不足。例如,强制执行规则的控件很难发现和理解。
  • Git 并不特别擅长处理二进制文件,例如游戏开发中常见的图形或视频内容。对于这些媒体文件,Git 无法像处理文本文件那样在粒度级别上解释更改。因此,它需要存储媒体文件的每个新版本的完整副本。
  • 虽然 Git Large File Storage (LFS) 旨在解决这个问题,但从内容创建者的角度来看,Git 流程(尽管对开发人员很有帮助)似乎很复杂。特别是因为他们无法像开发人员那样从 Git 中受益,因为媒体文件缺乏可传播性。
  • 最后,当存储库变得非常大时(即使它们不包含二进制文件),Git 会变慢。虽然不常见,但这种所谓的 monorepos 在几家大型科技公司中使用。部分克隆解决了一些问题。
Strategy

Therefore, the vision for Source Code Management at GitLab consists of three pillars:

  • Make it easy and intuitive to manage source code so that it is secure, compliant, and encourages best development practices.
  • Make it easy to work with large binary files in GitLab. And make it easy for content creators to contribute media files to GitLab to enable better collaboration with developers to support GitLab's mission: everyone can contribute!
  • Make it easy to work with monorepos in GitLab: &8262. (Note, this also touches other stages, especially the Verify stage).
策略

因此,GitLab 的源代码管理愿景由三大支柱组成:

  • 轻松直观地管理源代码,使其安全、合规,并鼓励最佳开发实践。
  • 在 GitLab 中轻松处理大型二进制文件。让内容创作者可以轻松地向 GitLab 贡献媒体文件,以便与开发人员更好地协作,以支持 GitLab 的使命:每个人都可以贡献!
  • 在 GitLab 中使用 monorepos 变得容易:&8262。(请注意,这也涉及其他阶段,尤其是“验证”阶段)。

Note: SCM is not only the most used function in GitLab but also the one with the longest history as it has been there from the beginning. As a result, we get a lot of feedback and have a long backlog of issues. Therefore, we need to spend a considerable share of our teams’ capacity on issues that are not at the center of this vision but address bugs, stability, security, and scalability to keep our users and customers happy.

注意:SCM 不仅是 GitLab 中最常用的函数,也是历史最悠久的函数,因为它从一开始就存在。因此,我们收到了很多反馈,并积压了很长时间的问题。因此,我们需要将团队能力的相当一部分用于不是这一愿景核心的问题,而是解决错误、稳定性、安全性和可扩展性,以保持我们的用户和客户满意。

摘自:

分类方向 - 源代码管理 | GitLab的

这篇关于Source Code Management--(SCM in gitlab)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/460307

相关文章

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控

10 Source-Get-Post-JsonP 网络请求

划重点 使用vue-resource.js库 进行网络请求操作POST : this.$http.post ( … )GET : this.$http.get ( … ) 小鸡炖蘑菇 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-w

LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍

概述 本节将通过一个简单的例子来介绍如何生成llvm IR,以Kaleidoscope IR中的例子为例,我们基于LLVM接口构建一个简单的编译器,实现简单的语句解析并转化为LLVM IR,生成对应的LLVM IR部分,代码如下,文件名为toy.cpp,先给出代码,后面会详细介绍每一步分代码: #include "llvm/ADT/APFloat.h"#include "llvm/ADT/S

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

Gerrit与Gitlab同步配置replication其他配置

一、Gerrit与Gitlab同步配置 当配置好gerrit环境后,还需要与现有gitlab库进行同步配置,否则会影响现有开发与打包流程。 1.安装gerrit replication插件 unzip gerrit.warcp WEB-INF/plugins/replication.jar ~/temp/ssh -p 29418 admin@172.19.16.64 gerrit plu

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

fetch-event-source 如何通过script全局引入

fetchEventSource源码中导出了两种类型的包cjs和esm。但是有个需求如何在原生是js中通过script标签引呢?需要加上type=module。今天介绍另一种方法 下载源码文件: https://github.com/Azure/fetch-event-source.git 安装: npm install --save-dev webpack webpack-cli ts

code: 400, msg: Required request body is missing 错误解决

引起这个错误的原因是,请求参数按照get方式给。 应该给json字符串才对 补充: 1. @RequestBody String resource 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List<String> indexCodes=(List<String>)json.

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity