
Adam ödemeyi almadı diye uzaktan imha etme sistemi paylaşmış okurken çıldırdım ya
Aşamayı az çok anlamadım ama atacam
Grup altındaki tüm kod ambarlarını alın
İlk adım, ön uç grubumuz altındaki tüm kod depolarının adlarını almak, ardından araştırmaya başlayacağım.
Daha sonra front-end dünyasında f12 yöntemimizi kullanarak depoyu grup altına alacak arayüzü bulacaksınız.

Arayüzü aldıktan sonra bu bozuk arayüzün sayfalara ayrılmış olduğunu ve hepsini bir kerede almanın imkansız olduğunu keşfettim.Varsayılan olarak bir sayfada yalnızca 20 öğe var.
const getJson = () =>
new Promise(async (resolve) => {
const total = 147 // 可以换成你们的仓库总数哦
const perPage = 100 // 100条就100条!我计算一下还不行!
const size = Math.ceil(total / perPage) // 诺,我算出来了,我就请求2次嘛,哼~
let res = []
for (let i = 1; i <= size; i++) {
const url = `http://gitlab.这是我们公司的域名我得隐藏一下😁.com/groups/我们前端组的组名/-/children.json?page=${i}&per_page=${perPage}`
const response = await fetch(url, {
method: 'get',
credentials: 'include' // 携带cookie
})
const data = await response.json()
res.push(...data)
if(i >= size){
resolve(res)
}
}
})
const getRepos = async ()=>{
const json = await getJson()
console.log('仓库总数',json.length);
const res = json.reduce((prev, curr) => {
// 这个正则是匹配仓库名的,front是我们公司前端组的组名,你们换成你们自己公司的哈,接口上有的噢
const name = /\/front\/([a-zA-Z-_0-9]*)/.exec(curr.relative_path)[1]
prev += `"${name}"\n`
return prev
}, '')
return res
}
console.log(await getRepos())amam~ Şimdi onu tarayıcıya koyup çalıştırıyorum ve istediğim veriyi alabiliyorum~Sık sık kullanabileceğimi ve bir sonraki kullanımımda yazmam gerekebileceğini düşündüğümden, tarayıcıda bir kod pasajı oluşturup kaydedeceğim (tarayıcıyı kaldırmadığınız sürece her zaman var olacaktır).

Onu çalıştır! Yaşasın ~ sonunda tüm depoların isimlerini aldım! Tamam, kopyalayalım.
Basılı ekran görüntüsünü yayınlamayacağım, yakalanma korkusuyla şirketin deposunun adı var 🥹 Çekingen olduğum için beni bağışlayın.
Dikkatli olursanız yazdırılan verinin bir dize olduğunu göreceksiniz.Şuna benziyor.Böyle bir verinin dizi gibi görünmesine rağmen dize gibi görünmemesine şaşırabilirsiniz.Bunu ayıracak virgül bile yok.Js'miz Burada böyle bir veri formatı yok!
"repo-name1" "repo-name2"Öhöm! Bu veri js için olmadığı için bundan sonra Shell kullanacağız.Bu veri kabuk içindir.Shell de ki dizi şu şekilde görünür.
Shell betiği klon kod deposu
#! /bin/bash
# 先来个友好的询问
read -p "是否在当前文件夹下克隆代码(yes/no):" flag
if [ "$flag" != "yes" ];then
echo "请输入yes" exit
fi
echo "正在当前文件夹下克隆前端所有代码.....请稍后"
# 定义一个包含多个仓库URL的列表
# (把刚刚复制的数据粘贴将来即可)
repos=(
"repo-name1"
"repo-name2"
...
)
# 遍历数组中的每个URL,并执行 git clone
for repo in "${repos[@]}"
do
git clone "http://gitlab.这是我们公司的域名我得隐藏一下😁.com/我们前端组的组名/$repo.git"
doneAnlaması kolay! Açıklamama gerek yok herkes anlasın~Tamam, şimdilik yukarıdaki kodu kullanarak grubunuzun tüm depolarını başarıyla klonlayabilirsiniz
EDİT: TEPKİNİZ DÜŞÜNCENİZ NEDİR