2024年Linux最全Linux repo基本用法 搭建自己的repo仓库[服务端],2024年最新最新Linux运维通用流行框架大全

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

 在当前目录中安装 Repo。此命令会创建一个 `.repo/` 目录,其中包含存放 Repo 源代码和标准 Android 清单文件的 Git 代码库。

 选项:


	+ `u`:指定从中检索清单代码库的网址。常见清单位于 `https://android.googlesource.com/platform/manifest`。
	+ `m`:选择代码库中的清单文件。如果未选择清单名称,则默认为 `default.xml`。
	+ `b`:指定修订版本,即特定的 **manifest-branch**。**注意**对于所有剩余的 Repo 命令,当前的工作目录必须是 **`.repo/`** 的父目录或该父目录的子目录。

 **当输入空的URL初始化, 报错. python 改为 python3 即可**

 

ubuntu@SERVER4:/disk4/repoTest$ repo init
Downloading Repo source from https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
remote: Enumerating objects: 8731, done.
remote: Counting objects: 100% (4959/4959), done.
remote: Compressing objects: 100% (2487/2487), done.
remote: Total 8731 (delta 4744), reused 2472 (delta 2472), pack-reused 3772
Receiving objects: 100% (8731/8731), 3.01 MiB | 4.60 MiB/s, done.
Resolving deltas: 100% (6011/6011), done.
Traceback (most recent call last):
File “/home/user/bin/repo”, line 1490, in
main(sys.argv[1:])
File “/home/user/bin/repo”, line 1440, in main
_Init(args, gitc_init=(cmd == “gitc-init”))
File “/home/user/bin/repo”, line 691, in _Init
os.rename(dst, dst_final)
OSError: [Errno 39] Directory not empty: ‘/disk4/repoTest/.repo/repo.tmp’ -> ‘/disk4/repoTest/.repo/repo’



### 搭建Repo仓库(服务端)


1. 搭建基于**gitolite**的GIT服务器 192.168.7.3
2. 默认创建的几个git仓库
	* 2.1. gitolite-admin : 用于管理git仓库和用户秘钥 [自动创建]
	* 2.2. manifest: 特殊Git仓库, repo通过此项目来获取仓库, 它包含了项目的清单(manifest)文件。仓库任意名称[手动创建]
	
	 **default.xml** 或者 **manifest.xml** 这是最重要的文件之一,定义了项目树状结构、各个子项目的URL、分支、标签以及其他同步策略等信息。每个项目对应一个 `<project>` 标签,并且包含项目路径、git仓库URL等属性
	
	 **groups.xml**:可能存在的文件,用于定义不同的项目组,以便于根据开发团队的不同需求或者权限来下载不同的子项目集合。
	
	 **other-manifests/** 目录: 该目录下可能有多个针对不同构建目标或版本的manifest文件,如 `android-9.0.0.xml` 等。
	* 2.3. test: 测试项目 [自动创建]
3. 配置repo的manifest: 只需要一个文件- **default.xml**
	* default.xml
	
	 
	```
	<?xml version="1.0" encoding="UTF-8"?>
	<manifest>
	  <remote name="codes" fetch="."/>
	  
	  <default remote="codes" sync-j="4"/>
	  
	  <project name="project\_1" revision="master"/>
	  <project name="project\_2" revision="master"/>
	</manifest>
	
	```




---


      manifest文件定义了这些仓库的基本布局和同步规则。配置含义如下:



> 
> * `<remote name="codes" fetch="."/>`:定义了一个远程仓库,名字叫做`codes`,其fetch地址为`.`。这里的`.`代表当前目录,意味着所有的项目都位于本地同一个父目录下,不需要从远程服务器拉取代码。
> * `<default remote="codes" sync-j="4"/>`:设置默认的远程仓库为刚刚定义的`codes`,并且设置了`sync-j`属性为4,这意味着在执行repo sync命令时,将会并发运行4个jobs(任务)来并行拉取和更新各个项目。
> * `<project name="project_1" revision="master"/>`:定义了一个名为`project_1`的项目,其对应的Git仓库的分支或者提交哈希为`master`,repo会在同步时检查并确保该项目处于`master`分支的最新状态。
> * `<project name="project_2" revision="master"/>`:类似地,定义了另一个名为`project_2`的项目,同样指向`master`分支。
> 
> 
> 


      文件描述了一个由两个Git项目(**project\_1**和**project\_2**)组成的代码仓库集合,它们都将从本地的`codes`远程仓库同步,并且在同步时默认使用`master`分支,并且同步过程可以并发执行四个任务以提高效率。


4. 客户端下载同步  
 刚开始使用的文件名称: manifest, 导致报错: '**default.xml’ not available**



    Downloading Repo source from https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
    remote: Enumerating objects: 8731, done.
    remote: Counting objects: 100% (4959/4959), done.
    remote: Compressing objects: 100% (2487/2487), done.
    remote: Total 8731 (delta 4745), reused 2472 (delta 2472), pack-reused 3772
    Receiving objects: 100% (8731/8731), 3.01 MiB | 10.66 MiB/s, done.
    Resolving deltas: 100% (6012/6012), done.
    fatal: manifest 'default.xml' not available
    fatal: manifest default.xml not found
    ================================================================================
    Repo command failed: UpdateManifestError
    	Unable to sync manifest default.xml


> 
> 指定清单: repo init git@192.168.7.3:RepoTest **-m** **other\_manifest**.xml
> 
> 
> 



#download manifests
ubuntu@SERVER4:/disk4/repoTest$ repo init -u git@192.168.7.3:manifest
repo: reusing existing repo client checkout in /disk4/repoTest

repo has been initialized in /disk4/repoTest

#repo sync download all source
ubuntu@SERVER4:/disk4/repoTest$ repo sync
Fetching: 100% (2/2), done in 14.816s
Updating files: 100% (1050/1050), done.
Checking out: 100% (2/2), done in 5.283s
repo sync has finished successfully.

### 附录(仅供参考)



> 
> 服务端文件结构:
> 
> 
> 



$ sudo ls -l /home/git/repositories/
total 172
drwx------ 7 git git 4096 2月 19 15:14 project_1.git
drwx------ 7 git git 4096 2月 19 15:14 project_2.git
drwx------ 7 git git 4096 2月 19 15:14 RepoTest.git
drwx------ 7 git git 4096 2月 19 15:14 manifest.git
drwx------ 7 git git 4096 2月 19 15:14 test.git



$ tree RepoTest/
RepoTest/
├── other_manifest.xml
└── default.xml




---



> 
> 客户端文件
> 
> 
> 



$ tree -L 1 -a RepoTest/
RepoTest/
├── project_1

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值