Compare commits

..
49 Commits
Author SHA1 Message Date
gfdgd-xi 23aba101a6 添加推荐依赖deepin-liferaft
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-08-06 18:08:37 +08:00
shenmo7192 8ee15d5725 fix(sync.py): 修正Gitee仓库名称获取逻辑,使用安全路径
Gitee的name字段可能包含非法字符,改用path作为仓库URL安全路径,确保clone/push URL合法
2026-08-03 19:39:56 +08:00
shenmo7192 a6f6c26fb9 ci(github workflow): simplify sync workflow and rewrite sync script
1. 移除多余的第三方同步目标和依赖包
2. 将原bash脚本重写为python脚本,新增多线程同步、失败重试和同步报告
3. 精简工作流的环境变量和执行参数
2026-08-03 19:16:34 +08:00
gfdgd-xi eebd5d7817 修复github项目页图片缺失的问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-29 09:49:43 +08:00
gfdgd-xi dd3d0e1a34 使用gitee令牌拉取仓库
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-25 18:28:20 +08:00
CharOfString 73a77bb9ca polish: README 2026-07-24 00:08:32 +08:00
gfdgd-xi 96feeb840f 调整ssh加密方式
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-14 11:23:59 +08:00
gfdgd-xi 7633dbe0fb Bump version 2026.07.11
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-11 14:13:21 +08:00
gfdgd-xi 572c5f3d13 Merge branch 'pr_19'
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-11 14:12:17 +08:00
gfdgd-xi 9c74df09be 调整ssh加密方式
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-11 12:59:54 +08:00
zeqiandGitee 61b011f9dd 修复编译失败
Signed-off-by: zeqi <a202128502@163.com>
2026-07-10 09:42:00 +00:00
gfdgd-xi 141a767e20 gxde-desktop-android 指定安装 spark-store 而不是可选安装 aptss
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-09 10:35:25 +08:00
gfdgd-xi 6bf8cb2c52 移除广告
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-07-04 09:23:39 +08:00
gfdgd-xiandGitee d877a80884 !17 修改MAINTAINERS顺序 按照字母表排序
Merge pull request !17 from CharOfString/N/A
2026-06-26 23:03:26 +00:00
CharOfStringandGitee 879ecb2926 修改MAINTAINERS顺序 按照字母表排序
Signed-off-by: CharOfString <markus_verify@126.com>
2026-06-26 18:28:19 +00:00
gfdgd-xi ad749b551b 更换deepin源地址
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-06-10 19:23:09 +08:00
gfdgd-xi 4625c03c78 删除linux-libc-dev
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-16 20:59:42 +08:00
gfdgd-xi d2e6e5dde1 编译环境内置wget包
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-16 12:16:18 +08:00
gfdgd-xi 257ec720e1 处理loong64 debian13 gpg签名问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-16 12:10:19 +08:00
gfdgd-xi c32e2ca563 设置自动添加[trusted=true]
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-10 22:18:01 +08:00
gfdgd-xi afd0d7d71e 添加环境变量DEBIAN_FRONTEND=noninteractive
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-09 22:40:05 +08:00
gfdgd-xi 8c0ad2bc93 修复bookworm未正常添加安全源的问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-09 22:37:39 +08:00
gfdgd-xi 98a89915e1 使用不限速的源地址
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-09 09:11:36 +08:00
gfdgd-xi 282c4ec982 修复环境变量未传入configure-building-enviroment.sh导致交叉编译出错的问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-09 08:26:28 +08:00
gfdgd-xi 0c23e00622 补充交叉编译缺失的环境变量
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-07 22:01:23 +08:00
gfdgd-xiandGitee 78d1775624 update .github/workflows/sources-zhuangzhuang-loong64.list.
Signed-off-by: gfdgd xi <3025613752@qq.com>
2026-05-04 22:37:14 +00:00
gfdgd-xi e96dbab83a 修复loong64 zhuangzhuang交叉编译问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-04 23:09:38 +08:00
gfdgd-xi 126f1cd95e meimei构建未删全
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-04 22:55:40 +08:00
gfdgd-xi 31147bb580 移除mips构建
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-04 22:48:12 +08:00
gfdgd-xi 82a741a08e 调整meimei构建
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-05-03 21:49:43 +08:00
shenmo7192andGitee 006e59e54e !16 修改维护者列表
Merge pull request !16 from CharOfString/master
2026-05-03 11:30:46 +00:00
CharOfString 179a8df1ec 修改维护者列表 2026-05-03 06:29:43 -05:00
gfdgd-xi 6e9ba79203 修复arm构建加源错误的问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-18 11:01:04 +08:00
gfdgd-xi 5e9cd51a31 GXDE\ mips cross直接使用源站进行构建
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-18 10:45:20 +08:00
gfdgd-xi 4ad940aeb3 GXDE\ mips 直接使用源站进行构建
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-18 10:34:52 +08:00
gfdgd-xi d3cf1f3faa 修改hetao 系统源地址至mirror.math.princeton.edu
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-18 10:21:38 +08:00
gfdgd-xi 4ae19694a3 调整hetao源地址
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-15 22:36:07 +08:00
gfdgd-xi 46c0155137 修复meimei交叉编译时未正确添加meimei源的问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-15 22:14:52 +08:00
gfdgd-xi a1996dfc42 优化源码获取步骤
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-12 08:11:46 +08:00
gfdgd-xi 4669494602 支持get-orig-source特性
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-04-11 19:33:05 +08:00
gfdgd-xi 998b5808b2 停用riscv64 backport
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-03-20 13:35:36 +08:00
gfdgd-xi 5c4864cd07 补充mips64el交叉编译
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-03-17 21:53:08 +08:00
gfdgd-xi fcf78ddf76 移除自动构建扩容部分
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-03-08 13:42:29 +08:00
gfdgd-xi 2d0ed0d0ee 恢复zhuangzhuang-mips构建
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-02-27 17:03:42 +08:00
gfdgd-xi a1d60cf87c 恢复 i386 zhuangzhuang 构建
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-02-25 07:52:53 +08:00
gfdgd-xi 14c042dec3 调整推荐依赖firmware-atheros为firmware-atheros | firmware-ath9k-htc
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-02-24 14:00:59 +08:00
gfdgd-xi 0681555067 交叉编译移除 tianlu
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-02-11 15:47:26 +08:00
gfdgd-xi 38dbe7a12f 补充backport构建
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-02-11 10:18:03 +08:00
gfdgd-xi 3bb1ee694b 修复因github API修改导致仓库同步错误的问题
Signed-off-by: gfdgd_xi <3025613752@qq.com>
2026-02-10 21:01:09 +08:00
29 changed files with 571 additions and 146 deletions
@@ -88,6 +88,7 @@ jobs:
https://github.com/$GITHUB_REPOSITORY \
${{ inputs.rootfs-source }} \
${{ github.ref_name }} \
${{ inputs.gxde-codename-upload }} \
$isBackport
- name: Building ${{ GITHUB.repository }}
@@ -97,11 +98,13 @@ jobs:
env gitPath=$gitPath bash .github/workflows/run-command-in-chroot.sh \
env GXDE_ARCH=${{ inputs.arch }} GXDE_CODENAME=${{ inputs.gxde-codename }} \
GXDE_ARCH=${{ inputs.arch }} GXDE_CROSS_ARCH=${{ inputs.gxde-cross-arch }} GO111MODULE=off \
DEBIAN_FRONTEND=noninteractive \
dpkg-buildpackage -b
else
env gitPath=$gitPath bash .github/workflows/run-command-in-chroot.sh \
env GXDE_ARCH=${{ inputs.arch }} GXDE_CODENAME=${{ inputs.gxde-codename }} \
GXDE_ARCH=${{ inputs.arch }} GXDE_CROSS_ARCH=${{ inputs.gxde-cross-arch }} GO111MODULE=off \
DEBIAN_FRONTEND=noninteractive \
bash build-deb.sh
fi
cp $BOTTLEPATH/*.deb . -rv
@@ -116,6 +119,7 @@ jobs:
echo -e "ls -1 | grep dbg_ | grep .deb | grep -v dtk | grep -v qt | grep -v dock | grep -v gxtk\nexit 0" | sudo tee remove-deb.sh
removeDeb=$(bash remove-deb.sh)
sudo rm -rf $removeDeb
sudo rm -rf linux-libc-dev_*_hetao.deb
- name: Pack tar
run: |
+6 -14
View File
@@ -68,19 +68,6 @@ jobs:
name: ${{ inputs.display-name || 'Build Job' }}
runs-on: ubuntu-24.04
steps:
# 由于默认的 Ubuntu 环境只有 17G 左右的剩余空间,所以我们需要先利用如下 action 对编译环境进行扩容
- name: Maximize build space
uses: easimon/maximize-build-space@master
with:
# 这个值是保留给系统的空间大小,之前设置太小,总会在安装依赖或者编译过程中报设备空间不足的错误而导致编译失败
root-reserve-mb: 4096
swap-size-mb: 512
remove-dotnet: 'true'
remove-docker-images: 'true'
remove-codeql: 'true'
remove-haskell: 'true'
remove-android: 'true'
- name: Clone Repository To Get Script
run: |
#apt update
@@ -95,26 +82,30 @@ jobs:
isBackport=backport
fi
export REPO_BRANCH=${{ github.ref_name }}
env GXDE_ARCH=${{ inputs.arch }} GXDE_CROSS_ARCH=${{ inputs.gxde-cross-arch }} \
bash .github/workflows/configure-building-enviroment-base-system.sh ${{ inputs.arch }} \
${{ inputs.rootfs-codename }} \
$REPOSITORY \
https://github.com/$GITHUB_REPOSITORY \
${{ inputs.rootfs-source }} \
${{ github.ref_name }} \
${{ inputs.gxde-codename-upload }} \
$isBackport
- name: Building ${{ GITHUB.repository }}
run: |
gitPath=$(basename $GITHUB_REPOSITORY)
export gitPath=$(basename $GITHUB_REPOSITORY)
if [[ -f system-bottle/$gitPath/debian/control ]]; then
env gitPath=$gitPath bash .github/workflows/run-command-in-chroot.sh \
env GXDE_ARCH=${{ inputs.arch }} GXDE_CODENAME=${{ inputs.gxde-codename }} \
GXDE_ARCH=${{ inputs.arch }} GXDE_CROSS_ARCH=${{ inputs.gxde-cross-arch }} GO111MODULE=off \
DEBIAN_FRONTEND=noninteractive \
dpkg-buildpackage -b
else
env gitPath=$gitPath bash .github/workflows/run-command-in-chroot.sh \
env GXDE_ARCH=${{ inputs.arch }} GXDE_CODENAME=${{ inputs.gxde-codename }} \
GXDE_ARCH=${{ inputs.arch }} GXDE_CROSS_ARCH=${{ inputs.gxde-cross-arch }} GO111MODULE=off \
DEBIAN_FRONTEND=noninteractive \
bash build-deb.sh
fi
cp $BOTTLEPATH/*.deb . -rv
@@ -129,6 +120,7 @@ jobs:
echo -e "ls -1 | grep dbg_ | grep .deb | grep -v dtk | grep -v qt | grep -v dock | grep -v gxtk\nexit 0" | sudo tee remove-deb.sh
removeDeb=$(bash remove-deb.sh)
sudo rm -rf $removeDeb
sudo rm -rf linux-libc-dev_*_hetao.deb
- name: Pack tar
run: |
+31
View File
@@ -0,0 +1,31 @@
name: Building GXDE Testing Package
run-name: Building ${{ GITHUB.REPOSITORY }}
on:
workflow_call:
secrets:
PASSWD:
required: true
USERS:
required: true
HOST:
required: true
UPATH:
required: true
UPROGRAM:
required: true
UPORT:
required: true
env:
REPOSITORY: https://github.com/GXDE-OS/GXDE
BOTTLEPATH: system-bottle
jobs:
call-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-zhuangzhuang-cross-host.yml@master
secrets: inherit
call-hetao:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-hetao-cross-host.yml@master
secrets: inherit
-8
View File
@@ -29,11 +29,3 @@ jobs:
call-hetao:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-hetao-cross.yml@master
secrets: inherit
call-tianlu:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-tianlu-cross.yml@master
secrets: inherit
call-meimei:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-meimei-cross.yml@master
secrets: inherit
+71
View File
@@ -0,0 +1,71 @@
name: Building GXDE Package (hetao)
run-name: Building ${{ GITHUB.REPOSITORY }}
on:
workflow_call:
secrets:
PASSWD:
required: true
USERS:
required: true
HOST:
required: true
UPATH:
required: true
UPROGRAM:
required: true
UPORT:
required: true
env:
REPOSITORY: https://github.com/GXDE-OS/GXDE
BOTTLEPATH: system-bottle
jobs:
call-amd64-hetao:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: amd64-hetao
arch: amd64
rootfs-codename: crimson
rootfs-source: https://mirrors.kernel.org/deepin/beige/
gxde-codename: hetao
gxde-codename-upload: hetao
gxde-cross-arch: amd64
call-arm64-hetao:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: arm64-hetao
arch: arm64
rootfs-codename: crimson
rootfs-source: https://mirrors.kernel.org/deepin/beige/
gxde-codename: hetao
gxde-codename-upload: hetao
gxde-cross-arch: arm64
call-loong64-hetao:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: loong64-hetao
arch: amd64
rootfs-codename: crimson
rootfs-source: https://mirrors.kernel.org/deepin/beige/
gxde-codename: hetao
gxde-codename-upload: hetao
gxde-cross-arch: loong64
call-riscv64-hetao:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: riscv64-hetao
arch: amd64
rootfs-codename: crimson
rootfs-source: https://mirrors.kernel.org/deepin/beige/
gxde-codename: hetao
gxde-codename-upload: hetao
gxde-cross-arch: riscv64
+2 -2
View File
@@ -28,7 +28,7 @@ jobs:
with:
display-name: loong64-meimei
arch: loong64
rootfs-codename: loongnix-stable
rootfs-source: https://pkg.loongnix.cn/loongnix/25
rootfs-codename: trixie
rootfs-source: http://loong13.debian.net/debian-loong64/
gxde-codename: meimei
gxde-codename-upload: meimei
@@ -0,0 +1,83 @@
name: Building GXDE Testing Package (zhuangzhuang)
run-name: Building ${{ GITHUB.REPOSITORY }}
on:
workflow_call:
secrets:
PASSWD:
required: true
USERS:
required: true
HOST:
required: true
UPATH:
required: true
UPROGRAM:
required: true
UPORT:
required: true
env:
REPOSITORY: https://github.com/GXDE-OS/GXDE
BOTTLEPATH: system-bottle
jobs:
call-i386-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: i386-zhuangzhuang
arch: i386
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: i386
call-amd64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: amd64-zhuangzhuang
arch: amd64
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: amd64
call-arm64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: arm64-zhuangzhuang
arch: arm64
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: arm64
call-riscv64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: riscv64-zhuangzhuang
arch: amd64
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: riscv64
call-loong64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: loong64-zhuangzhuang
arch: amd64
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: loong64
@@ -22,6 +22,18 @@ env:
BOTTLEPATH: system-bottle
jobs:
call-i386-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: i386-zhuangzhuang
arch: i386
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: i386
call-amd64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
@@ -57,3 +69,15 @@ jobs:
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: riscv64
call-loong64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: loong64-zhuangzhuang
arch: amd64
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
gxde-cross-arch: loong64
@@ -22,6 +22,17 @@ env:
BOTTLEPATH: system-bottle
jobs:
call-i386-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: i386-zhuangzhuang
arch: i386
rootfs-codename: trixie
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
call-amd64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
@@ -54,3 +65,14 @@ jobs:
rootfs-source: https://deb.debian.org/debian/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
call-loong64-zhuangzhuang:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-base.yml@master
secrets: inherit
with:
display-name: loong64-zhuangzhuang
arch: loong64
rootfs-codename: trixie
rootfs-source: http://loong13.debian.net/debian-loong64/
gxde-codename: lizhi
gxde-codename-upload: zhuangzhuang
-4
View File
@@ -26,10 +26,6 @@ jobs:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-zhuangzhuang.yml@master
secrets: inherit
call-meimei:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-meimei.yml@master
secrets: inherit
call-hetao:
uses: GXDE-OS/GXDE/.github/workflows/building-deb-hetao.yml@master
secrets: inherit
@@ -56,12 +56,14 @@ if [[ $? != 0 ]] && [[ $1 == loong64 ]] && [[ $2 != "loongnix" ]]; then
sudo mv squashfs-root $bottlePath -v
fi
sudo bash .github/workflows/pardus-chroot $bottlePath
if [[ $7 == "backport" ]]; then
if [[ $8 == "backport" ]]; then
sudo cp -rv .github/workflows/debian-backports.list $bottlePath/etc/apt/sources.list.d
sudo mkdir -p $bottlePath/etc/apt/preferences.d/
sudo cp -rv .github/workflows/90bookworm-backports $bottlePath/etc/apt/preferences.d/
echo "deb [trusted=true] https://repo.gxde.top/gxde-os/tianlu-bpo ./" >> $bottlePath/etc/apt/sources.list.d/gxde-os-bpo.list
echo "deb [trusted=true] https://repo1.gxde.top/gxde-os/tianlu-bpo ./" >> $bottlePath/etc/apt/sources.list.d/gxde-os-bpo.list
fi
sudo mkdir -p $bottlePath/sources-list
sudo cp -v .github/workflows/sources-*.list $bottlePath/sources-list
# 配置 git
#echo "deb [trusted=true] https://deb.debian.org/debian-ports/ unreleased main" | sudo tee $bottlePath/etc/apt/sources.list.d/debian-unreleased.list
sudo chroot $bottlePath apt update
@@ -72,22 +74,6 @@ sudo chroot $bottlePath git clone $4 -b $6 #--depth=1
sudo mv $bottlePath/$(basename $3)/.github/workflows/* $bottlePath/$(basename $4)/.github/workflows -v
# 修改版本号
#sudo sed -i "s/) UNRELEASED; urgency=medium/~$2) UNRELEASED; urgency=medium/g" $bottlePath/deep-wine-runner-qemu-system/debian/changelog
case $2 in
"trixie")
env gitPath=$(basename $4) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh zhuangzhuang
;;
"sid")
env gitPath=$(basename $4) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh zhuangzhuang
;;
"loongnix-stable")
env gitPath=$(basename $4) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh meimei
;;
"crimson")
env gitPath=$(basename $4) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh hetao
;;
*)
env gitPath=$(basename $4) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh
;;
esac
env gitPath=$(basename $4) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh $7 $GXDE_CROSS_ARCH
exit 0
@@ -1,5 +1,6 @@
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive # 防止卡 tzdate
GXDE_CROSS_ARCH=$2
#mkdir -p /etc/apt/sources.list.d/
#cp /etc/apt/sources.list /etc/apt/sources.list.d/sources.list
#sed -i "s/deb /deb-src /g" /etc/apt/sources.list.d/sources.list
@@ -20,19 +21,31 @@ export DEBIAN_FRONTEND=noninteractive # 防止卡 tzdate
if [[ $1 == "" ]] || [[ $1 == "tianlu" ]]; then
echo "deb [trusted=true] https://repo.gxde.top/gxde-os/tianlu ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo.gxde.top/gxde-os/bixie ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo1.gxde.top/gxde-os/tianlu ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo1.gxde.top/gxde-os/bixie ./" >> /etc/apt/sources.list.d/gxde-os.list
elif [[ $1 == "zhuangzhuang" ]];then
echo "deb [trusted=true] https://repo.gxde.top/gxde-os/zhuangzhuang ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo.gxde.top/gxde-os/lizhi ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo1.gxde.top/gxde-os/zhuangzhuang ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo1.gxde.top/gxde-os/lizhi ./" >> /etc/apt/sources.list.d/gxde-os.list
else
echo "deb [trusted=true] https://repo.gxde.top/gxde-os/$1 ./" >> /etc/apt/sources.list.d/gxde-os.list
echo "deb [trusted=true] https://repo1.gxde.top/gxde-os/$1 ./" >> /etc/apt/sources.list.d/gxde-os.list
fi
#if [[ $(dpkg --print-architecture) == "loong64" ]]; then
# echo "deb [trusted=true] https://deb.debian.org/debian-ports/ unreleased main" > /etc/apt/sources.list.d/debian-unreleased.list
#fi
apt install -f -y
apt install debian-ports-archive-keyring debian-archive-keyring -y
apt install debian-ports-archive-keyring debian-archive-keyring wget -y
if [[ -f /sources-list/sources-$1.list ]]; then
if [[ $(dpkg --print-architecture) == "riscv64" ]] || [[ $GXDE_CROSS_ARCH == "riscv64" ]]; then
cp /sources-list/sources-$1-without-backport.list /etc/apt/sources.list.d -v
else
if [[ $(dpkg --print-architecture) == "loong64" ]] || [[ $GXDE_CROSS_ARCH == "loong64" ]]; then
cp /sources-list/sources-$1-loong64.list /etc/apt/sources.list.d -v
wget -O /etc/apt/trusted.gpg.d/debian-trixie-loong64.gpg https://loong13.debian.net/keyrings/debian-trixie-loong64.gpg
else
cp /sources-list/sources-$1.list /etc/apt/sources.list.d -v
fi
fi
fi
for i in {1..8};
do
apt update -o Acquire::Check-Valid-Until=false -y
@@ -41,7 +54,7 @@ do
fi
sleep 1
done
apt install dpkg-dev sudo debian-ports-archive-keyring debian-archive-keyring devscripts -y
apt install wget curl dpkg-dev sudo debian-ports-archive-keyring debian-archive-keyring devscripts -y
#neofetch
#if [[ `arch` != "x86_64" ]]; then
# apt source qemu
@@ -59,6 +72,7 @@ apt install dpkg-dev sudo debian-ports-archive-keyring debian-archive-keyring de
# 如果是 Debian10 就需要安装 Python3 的依赖
#apt build-dep python3.7 -y
# 解包 gxde-desktop-base
apt download gxde-desktop-base
dpkg -x gxde-desktop-base_*.deb /
rm gxde-desktop-base_*.deb -rfv
@@ -74,4 +88,48 @@ do
fi
sleep 1
done
# 从上游拉源代码
# 从上游拉源代码
./debian/rules get-orig-source
# 收集当前目录和上层目录的所有 .tar* 文件
tar_files=()
if compgen -G "./*.tar*" > /dev/null; then
tar_files+=( ./*.tar* )
fi
if compgen -G "../*.tar*" > /dev/null; then
tar_files+=( ../*.tar* )
fi
# 如果找到 tar 文件,则逐个处理
if [ ${#tar_files[@]} -gt 0 ]; then
for archive in "${tar_files[@]}"; do
filename=$(basename "$archive")
echo "处理: $archive"
# 确定目标目录
target_dir="."
if [[ "$filename" =~ -(amd64|arm64)\.tar ]]; then
arch="${BASH_REMATCH[1]}"
target_dir="./$arch"
echo " 架构: $arch → 目标目录: $target_dir"
else
echo " 通用包 → 目标目录: 当前目录"
fi
mkdir -p "$target_dir"
# 直接解压到目标目录,去除顶层目录
if tar -xzvf "$archive" -C "$target_dir" --strip-components=1; then
echo " 完成: 内容已解压至 $target_dir"
# (可选)解压成功后删除原始 tar 文件
# rm "$archive"
else
echo " 错误: 解压 $archive 失败,保留原始文件。"
fi
done
else
echo "未找到任何 .tar* 文件,跳过解压步骤。"
fi
exit 0
+10
View File
@@ -0,0 +1,10 @@
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
@@ -0,0 +1,25 @@
deb http://loong13.debian.net/debian-loong64/ trixie main contrib non-free non-free-firmware
deb-src http://loong13.debian.net/debian-loong64/ trixie main contrib non-free non-free-firmware
deb http://loong13.debian.net/debian-loong64/ trixie-updates main contrib non-free non-free-firmware
deb-src http://loong13.debian.net/debian-loong64/ trixie-updates main contrib non-free non-free-firmware
deb http://loong13.debian.net/debian-loong64/ trixie-backports main contrib non-free non-free-firmware
deb-src http://loong13.debian.net/debian-loong64/ trixie-backports main contrib non-free non-free-firmware
deb http://loong13.debian.net/debian-loong64-security/ trixie-security main contrib non-free non-free-firmware
deb-src http://loong13.debian.net/debian-loong64-security/ trixie-security main contrib non-free non-free-firmware
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
@@ -0,0 +1,25 @@
deb [trusted=true] http://loong13.debian.net/debian-loong64/ trixie main contrib non-free non-free-firmware
deb-src [trusted=true] http://loong13.debian.net/debian-loong64/ trixie main contrib non-free non-free-firmware
deb [trusted=true] http://loong13.debian.net/debian-loong64/ trixie-updates main contrib non-free non-free-firmware
deb-src [trusted=true] http://loong13.debian.net/debian-loong64/ trixie-updates main contrib non-free non-free-firmware
deb [trusted=true] http://loong13.debian.net/debian-loong64/ trixie-backports main contrib non-free non-free-firmware
deb-src [trusted=true] http://loong13.debian.net/debian-loong64/ trixie-backports main contrib non-free non-free-firmware
deb [trusted=true] http://loong13.debian.net/debian-loong64-security/ trixie-security main contrib non-free non-free-firmware
deb-src [trusted=true] http://loong13.debian.net/debian-loong64-security/ trixie-security main contrib non-free non-free-firmware
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
@@ -0,0 +1,10 @@
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
# deb-src https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
# deb-src https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
# deb-src https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
@@ -0,0 +1,13 @@
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
+4 -6
View File
@@ -16,17 +16,15 @@ jobs:
- name: Config
run: |
sudo apt update
sudo apt install git python3-requests -y
sudo apt install git -y
- name: Push
env:
GITHUBTOKEN: ${{ secrets.GITHUBTOKEN }}
GITHUBUSER: ${{ secrets.GITHUBUSER }}
GITCODETOKEN: ${{ secrets.GITCODETOKEN }}
GITCODEUSER: ${{ secrets.GITCODEUSER }}
ATOMGITTOKEN: ${{ secrets.ATOMGITTOKEN }}
ATOMGITUSER: ${{ secrets.ATOMGITUSER }}
GITEEUSER: ${{ secrets.GITEEUSER }}
GITEETOCKEN: ${{ secrets.GITEETOCKEN }}
run: |
cd sync-gitee-to-github
python3 sync.py $GITHUBUSER $GITHUBTOKEN $GITCODEUSER $GITCODETOKEN $ATOMGITUSER $ATOMGITTOKEN
python3 sync.py $GITEEUSER $GITEETOCKEN $GITHUBUSER $GITHUBTOKEN
View File
+1
View File
@@ -1,5 +1,6 @@
This file contains honored contributers of GXDE and GXDE OS. The list is in alphabetical order.
CharOfString <markus_verify@126.com>
dependon <liuminghang0821@gmail.com>
elysia <c.elysia@foxmail.com>
gfdgd xi <3025613752@qq.com>
+14 -6
View File
@@ -1,9 +1,18 @@
![HEADER](./readme-header.png)
<div>
<div style="float: left; display: flex; align-items: center" >
<a href='https://gitee.com/GXDE-OS/GXDE/stargazers'><img src='https://gitee.com/GXDE-OS/GXDE/badge/star.svg?theme=dark' alt='star'></img></a>
<img src='https://gitcode.com/GXDE-OS/GXDE/star/badge.svg' alt='G-Star'></img>
</div>
<div style="float: right">
<a href="./README.zh.md">中文版</a>
</div>
</div>
## Welcome to GXDE OS Community
**[中文](/README.zh.md)**
GXDE OS is an Debian based Linux distro featuring GXDE Desktop Environment. It offers an elegant, beautifu, light weight and out-of-the-box experience.
### Classic and Extended Deepin DE Experience
@@ -88,8 +97,7 @@ The author is online and hungry for support (nom nom~). Feeding might even get u
<p><img src="https://www.gxde.top/install/gf.jpg" style="border-radius: 4px;" ></p>
### Advertisement
Scan to receive a payment red envelope from the Alipay official event!
<p><img src="Icon/QR/advertisement0.jpg" width="250" ></p>
# ©2023Now gfdgd xi
<span style="color: #E6004C; font-size: 20px"><b>©2023Now gfdgd xi</b></span>
<div style="background: #E6004C; width: 100%; height: 3px;"></div>
+12 -12
View File
@@ -1,11 +1,14 @@
<center><img src=new-logo-long.png width=300/></center>
<hr>
![HEADER](./readme-header.png)
<div>
<div style="float: left; display: flex; align-items: center" >
<a href='https://gitee.com/GXDE-OS/GXDE/stargazers'><img src='https://gitee.com/GXDE-OS/GXDE/badge/star.svg?theme=dark' alt='star'></img></a>
![G-Start](https://gitcode.com/GXDE-OS/GXDE/star/badge.svg)
**[English](/README.md)**
<img src='https://gitcode.com/GXDE-OS/GXDE/star/badge.svg' alt='G-Star'></img>
</div>
<div style="float: right">
<a href="./README.md">English Version</a>
</div>
</div>
## 简介
@@ -87,9 +90,6 @@ Gitcodehttps://gitcode.com/GXDE-OS
<p><img src="https://www.gxde.top/install/gf.jpg" style="border-radius: 4px;" ></p>
<span style="color: #E6004C; font-size: 20px"><b>©2023Now gfdgd xi</b></span>
### 广告
支付宝官方活动,扫描获得支付红包!
<p><img src="Icon/QR/advertisement0.jpg" width="250" ></p>
# ©2023Now gfdgd xi
<div style="background: #E6004C; width: 100%; height: 3px;"></div>
+5 -3
View File
@@ -1,4 +1,4 @@
gxde (2026.02.08) UNRELEASED; urgency=medium
gxde (2026.08.06) UNRELEASED; urgency=medium
* 新增 remmina 以解决远程问题
* 改为安装 dde-printer
@@ -23,9 +23,11 @@ gxde (2026.02.08) UNRELEASED; urgency=medium
* 新增 GXDE 硬件管理器
* 推荐安装 deepin 跨端协同
* 更改 gxde-desktop-extra 推荐依赖
* 推荐安装 firmware-atheros
* 推荐安装 firmware-atheros | firmware-ath9k-htc
* gxde-desktop-android 指定安装 spark-store 而不是可选安装 aptss
* 添加推荐依赖 deepin-liferaft
-- gfdgd_xi <3025613752@qq.com> Sun, 08 Feb 2026 14:01:52 +0800
-- gfdgd_xi <3025613752@qq.com> Thu, 06 Aug 2026 18:08:23 +0800
gxde (2024.10.20) UNRELEASED; urgency=medium
+3 -2
View File
@@ -50,6 +50,7 @@ Recommends: ${misc:Depends},
fcitx5-pinyin-zhwiki,
dde-cooperation,
firmware-atheros,
deepin-liferaft,
Description: GXDE New Desktop Environment Extra - Next
This is a meta package depends GXDE New Desktop Envrionment Extra.
.
@@ -69,7 +70,7 @@ Depends:
gxde-font-installer,
gxde-movie,
gxde-quick-hash,
spark-store | aptss,
spark-store,
deepin-system-monitor,
gxde-control-center,
gxde-file-manager,
@@ -90,8 +91,8 @@ Conflicts:
linux-kernel-oldstable-gxde-loong64,
plymouth,
tela-grub2-themes,
plymouth-theme-gxde-logo,
firmware-atheros,
firmware-ath9k-htc,
Description: GXDE New Desktop Environment For PRoot - Next
This is a meta package depends GXDE New Desktop Envrionment in Android PRoot.
.
Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

+134 -61
View File
@@ -1,73 +1,146 @@
#!/bin/bash
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
将 Gitee 上的 GXDE-OS 组织仓库镜像同步到 GitHubGXDE-OS 组织)。
用法:
python3 sync.py <gitee用户名> <gitee密码或Token> <github用户名> <githubToken>
流程:
1. 通过 Gitee API v5 分页获取 GXDE-OS 组织下的全部仓库列表(带 token 失败时回退匿名)
2. 多线程 clone --bare 拉取 Gitee 仓库
3. 逐个 push --mirror 推送到 GitHub,失败自动重试并在结束时汇总报告
"""
import json
import os
import subprocess
import sys
import time
import requests
import threading
import urllib.parse
import urllib.request
from concurrent.futures import ThreadPoolExecutor, as_completed
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
dataHeaders = {
"accept": "application/json"
}
pullUrl = "https://gitee.com/GXDE-OS/"
pushUrl = [
"https://@USER@:@PASS@@github.com/GXDE-OS/",
"https://@USER@:@PASS@@gitcode.com/GXDE-OS/",
"https://@USER@:@PASS@@atomgit.com/GXDE-OS/"
]
programPath = os.path.split(os.path.realpath(__file__))[0]
cloneDir = os.path.join(programPath, "git-clone")
orgName = "GXDE-OS"
perPage = 100
threadMax = 8
if (len(sys.argv) < 1 + len(pushUrl) * 2):
print(f"请输入用于推送的账户和密码(需要 {len(pushUrl)} 组以推送不同的平台,提供顺序如下)")
for i in pushUrl:
print(f" {i}")
exit(1)
# 读取参数
userName = []
password = []
for i in range(1, len(sys.argv)):
# 输入账户
if (i % 2 == 1):
userName.append(sys.argv[i])
# 输入密码
if (i % 2 == 0):
password.append(sys.argv[i])
def usage():
print("用法: python3 sync.py <gitee用户名> <gitee密码或Token> <github用户名> <githubToken>")
sys.exit(1)
def sync(i):
global thread
# 拉取代码进行同步
if (not os.path.exists(f"{programPath}/git-clone")):
os.makedirs(f"{programPath}/git-clone")
print(f"======================> {pullUrl}/{i}")
os.system(f"cd '{programPath}/git-clone' ; git clone --bare '{pullUrl}/{i}'")
# 推送
for j in range(len(pushUrl)):
# git remote set-url origin
gitUrl = pushUrl[j].replace("@USER@", userName[j]).replace("@PASS@", password[j]) + "/" + i
os.system(f"cd '{programPath}/git-clone/{i}.git' ; git remote set-url origin '{gitUrl}'")
os.system(f"cd '{programPath}/git-clone/{i}.git' ; git push --mirror")
# 移除临时文件
os.system(f"rm -rf '{programPath}/git-clone/{i}.git'")
thread -= 1
data = requests.get("https://github.com/orgs/GXDE-OS/repos_list?q=&page=1", headers=dataHeaders).json()
# 获取页数
page = int(data["pageCount"])
def apiGet(path, params):
"""调用 Gitee API v5 的单个请求"""
params["per_page"] = str(perPage)
url = "https://gitee.com/api/v5" + path + "?" + urllib.parse.urlencode(params)
req = urllib.request.Request(url, headers={"User-Agent": "GXDE-Sync/1.0"})
with urllib.request.urlopen(req, timeout=30) as resp:
return json.loads(resp.read().decode("utf-8"))
def getGiteeRepos(token):
"""分页获取 Gitee 组织下全部仓库的 path(URL 安全路径)
Gitee API 返回的 name 是仓库别名(可能含大写、中文或括号,如
"CTranslate2"),不能直接用作 clone URL 的路径组件;path 才是 URL
安全的仓库路径(如 "ctranslate2"),用它拼接 clone/push URL 才合法。
"""
repoList = []
# 获取仓库列表
for i in range(1, page + 1):
pageData = requests.get(f"https://github.com/orgs/GXDE-OS/repos_list?q=&page={i}", headers=dataHeaders).json()
repositories = pageData["repositories"]
for j in repositories:
repoList.append(j["name"])
# 多线程处理以提升速度
thread = 0
threadMax = 32
for i in repoList:
page = 1
while True:
time.sleep(0.1)
if (thread < threadMax):
threading.Thread(target=sync, args=[i]).start()
thread += 1
params = {"page": str(page)}
if token:
params["access_token"] = token
data = apiGet(f"/orgs/{orgName}/repos", params)
if not isinstance(data, list) or len(data) == 0:
break
repoList.extend([i["path"] for i in data])
page += 1
return repoList
def runGit(args, cwd=None):
return subprocess.run(args, cwd=cwd, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, text=True)
def syncRepo(name, pullUrl, pushUrl):
repoDir = os.path.join(cloneDir, name + ".git")
try:
# 1. 从 Gitee clone --bare(重试 3 次)
ok = False
lastOut = ""
for attempt in range(3):
result = runGit(["git", "clone", "--bare", pullUrl + name, repoDir])
if result.returncode == 0:
ok = True
break
lastOut = result.stdout
time.sleep(5)
if not ok:
print(f"[FAIL] clone 失败: {name}\n{lastOut}")
return False
# 2. push --mirror 到 GitHub(重试 3 次)
ok = False
lastOut = ""
for attempt in range(3):
result = runGit(["git", "-C", repoDir, "push", "--mirror", pushUrl + name])
if result.returncode == 0:
ok = True
break
lastOut = result.stdout
time.sleep(5)
if not ok:
print(f"[FAIL] push 失败: {name}\n{lastOut}")
return False
print(f"[ OK ] 同步完成: {name}")
return True
finally:
# 清理临时目录
runGit(["rm", "-rf", repoDir])
def main():
if len(sys.argv) < 5:
usage()
giteeUser, giteeToken = sys.argv[1], sys.argv[2]
githubUser, githubToken = sys.argv[3], sys.argv[4]
pullUrl = f"https://{urllib.parse.quote(giteeUser)}:{urllib.parse.quote(giteeToken)}@gitee.com/{orgName}/"
pushUrl = f"https://{urllib.parse.quote(githubUser)}:{urllib.parse.quote(githubToken)}@github.com/{orgName}/"
os.makedirs(cloneDir, exist_ok=True)
# 获取仓库列表:优先带 token,失败则回退到匿名(仅公开仓库)
try:
repoList = getGiteeRepos(giteeToken)
except Exception:
repoList = getGiteeRepos("")
print(f"共获取到 {len(repoList)} 个仓库")
if not repoList:
print("未能获取仓库列表,退出")
sys.exit(1)
failed = []
with ThreadPoolExecutor(max_workers=threadMax) as pool:
futures = {pool.submit(syncRepo, n, pullUrl, pushUrl): n for n in repoList}
for future in as_completed(futures):
if not future.result():
failed.append(futures[future])
print("=" * 50)
print(f"同步完成: 成功 {len(repoList) - len(failed)} / {len(repoList)}")
if failed:
print("以下仓库同步失败:")
for name in failed:
print(" -", name)
sys.exit(1)
if __name__ == "__main__":
main()