美文网首页
搭建Repo仓库简单记录

搭建Repo仓库简单记录

作者: 梧叶已秋声 | 来源:发表于2024-03-15 15:27 被阅读0次

1.下载repo工具
git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/

可以执行export PATH=/E/repo/git-repo:$PATH临时设置repo环境变量,也可以加到.bashrc中。

2.搭建repo仓库
这里需要新建manifest仓库和aaa仓库
2.1 新建manifest仓库
E盘下创建一个项目目录,例如/E/Project。

在此目录下创建manifest文件夹,初始化git仓库。

user@user:/E/Project/manifest$ git init
已初始化空的 Git 仓库于 /E/Project/manifest/.git/

设置git仓库的remote。
git remote add origin /E/Project/manifest
查看是否设置成功。

user@user:/E/Project/manifest$ git remote -vv
origin  /E/Project/manifest (fetch)
origin  /E/Project/manifest (push)

新建manifest文件,例如test.xml,然后提交代码。

这是一个最简单的manifest.xml文件。

<?xml version="1.0" encoding="UTF-8" ?>
<manifest>
  <!--远程仓库-->
  <remote name="origin" fetch="." revision="master"/> 

  <!--具体项目--> 
  <project 
    remote="origin"      
    name="aaa"      
    path="bbb" /> 
</manifest>

为了显示name 和 path 的差异,我特地使用了不同的字符。接下来会新建仓库,使用aaa文件夹,会被clone为bbb文件夹。aaa是实际文件夹,clone会被命名为bbb。


2.2 新建具体项目仓库aaa

在Project目录下创建aaa文件夹,和manifest文件夹一样,初始化git仓库,并设置remote。

git remote add origin /E/Project/aaa
user@user:/E/Project/aaa$ git remote -vv
origin  /E/Project/aaa (fetch)
origin  /E/Project/aaa (push)

至此,远程仓库已经基本配置完成,目录结构如下所示。

user@user:/E/Project$ tree
.
├── aaa
│   └── 1.txt
└── manifest
    └── test.xml


2.3测试本地是否能从Project获取代码

新建一个文件夹ProjectB,使用repo init和sync 获取代码。

repo init -u /E/Project/manifest -m test.xml
repo sync

cd ProjectB
user@user:/E/ProjectB$ repo init  -u /E/Project/manifest -m test.xml
Downloading Repo source from https://gerrit.googlesource.com/git-repo
repo has been initialized in /E/ProjectB
user@user:/E/ProjectB$ repo sync
Fetching: 100% (1/1), done in 0.115s
repo sync has finished successfully.

文件结构如下所示。

user@user:/E/ProjectB$ tree -L 2 -a 
.
├── bbb
│   ├── 1.txt
│   └── .git -> ../.repo/projects/bbb.git
└── .repo
    ├── copy-link-files.json
    ├── manifests
    ├── manifests.git
    ├── manifest.xml
    ├── project.list
    ├── project-objects
    ├── projects
    ├── repo
    ├── .repo_fetchtimes.json
    ├── .repo_localsyncstate.json
    └── TRACE_FILE

8 directories, 7 files

3.简单使用ssh共享
这里不考虑使用gerrit的情况。
要配置本机(例如当前设备ip192.168.2.45)作为SSH服务器,并允许其他IP通过密钥认证访问。

3.1 生成密钥对
首先确保已经生成 ssh 秘钥对,一般都是生成过的。如果没有,请在 Linux 系统终端执行:
ssh-keygen -t rsa -C "username@xxx.com"
-C 后为邮箱,加这个邮箱参数生成密钥。
执行后/home/user/.ssh 下会生成秘钥。
id_rsa.pub如下所示


3.2 启动SSH服务

安装OpenSSH服务器,然后启动。

sudo apt update
sudo apt install openssh-server
sudo systemctl start ssh

3.3 测试
执行ssh-copy-id ~/.ssh/id_rsa.pub user@192.168.2.45~/.ssh/id_rsa.pub添加到服务器的~/.ssh/authorized_keys

使用ssh user@192.168.2.45 可以测试从能否通过密钥认证访问。
如果一切配置正确,就能够在不输入密码的情况下访问。

这是自测结果。


然后就可以使用ssh地址。
初始化仓库,同步代码。

repo init  -u ssh://user@192.168.2.45/E/Project/manifest -m test.xml
repo sync
user@user:/E/ProjectC$ repo sync
Fetching project aaa
remote: 枚举对象中: 3, 完成.        
remote: 对象计数中: 100% (3/3), 完成.        
remote: 压缩对象中: 100% (2/2), 完成.        
remote: 总共 3 (差异 0),复用 0 (差异 0)        
来自 ssh://192.168.2.45/E/Project/aaa
 * [新分支]          master     -> origin/master

如需让其他设备能访问,需要把另一台电脑的生成的公钥文件id_rsa.pub放到服务器上。
在另一台电脑上执行如下命令,把另一台设备的公钥放到服务器上。

ssh-keygen -f "/home/user/.ssh/known_hosts" -R "192.168.2.45"

将公钥添加到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.2.45

参考链接:
如何使用repo管理本地私有仓库
repo:从零开始搭建repo环境

相关文章

网友评论

      本文标题:搭建Repo仓库简单记录

      本文链接:https://www.haomeiwen.com/subject/ipegzdtx.html