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
网友评论