กลไกการอัพเดตจะเป็นอย่างไรในทุบตี


0

ฉันต้องอัปเดตการรวบรวมสคริปต์เป็นครั้งคราว แต่ฉันไม่รู้ว่าจะเริ่มสคริปต์ตรวจสอบเวอร์ชันเป็นทุบตีได้อย่างไร

ฉันมีแฟ้มรุ่นที่มี 3 vars: version=0, subversion=0และsubsubversion=1และฉันมีเว็บเซิร์ฟเวอร์ที่ให้บริการการปรับปรุงที่มีการติดตั้งการปฏิบัติเป็นสคริปต์ทุบตี ในไดเรกทอรีชื่ออัปเดต:

/updates/
0.0.1
0.0.2
0.0.3

และไดเรกทอรีที่เรียกว่ากระแสที่เก็บเวอร์ชันปัจจุบัน

/current/
0.0.1
version

ตอนนี้ผมต้องการที่จะมีสคริปต์ที่ใช้$version, $subversionและ$subsubversionและกำหนดปรับปรุงแม่มดดาวน์โหลดและรัน หลังจากส่วนนี้เสร็จสิ้นสคริปต์อัปเดตควรเพิ่ม var เพื่อให้ดาวน์โหลดอัปเดตถัดไปหากมี nextversionขอเรียกว่า

ฉันติดอยู่กับการเพิ่ม vars ทั้งสามและnextversionตัวแปรในสคริปต์การปรับปรุง

ฉันจะทำอย่างไรเพื่อเพิ่ม vars tree และ var ที่สี่ให้สูงขึ้นไปอีกระดับ ฉันจะจัดการกับมันอย่างไรถ้าฉันไปจาก 0.0.9 ถึง 0.1.0 หรือแม้กระทั่งจาก 0.9.9 ถึง 1.0.0 และอื่น ๆ โดยไม่ต้องผลิตจำนวนมากif- else- elifงบ ฉันเศร้าที่ไม่ดีในการหาลูป


1
หมายเลขเวอร์ชันเป็นเพียงตัวเลข ดังนั้นหลังจากที่คุณแน่นอนยังสามารถมี0.9.0 0.10.0แต่ถ้าคุณต้องการทำให้สิ่งต่าง ๆ เป็นเรื่องง่ายเพียงใช้สิ่งที่ต้องการเช่นหมายเลขการแก้ไขซึ่งคุณเพียงแค่นับ ดังนั้นเพียงแค่ติด1, 2, 3, 4และอื่น ๆ
Shi

นี่เป็นวิธีที่ไม่มีประสิทธิภาพอย่างแท้จริงในการอัปเดต - หากสคริปต์เฉพาะได้รับการอัปเดต 10 ครั้งระหว่างเวอร์ชันบนไคลเอนต์และเวอร์ชันล่าสุดควรดาวน์โหลดเวอร์ชันกลาง 9 ตัวตามลำดับหรือไม่
Gordon Davisson

โดยทั่วไปจะสามารถอัปเดตระบบได้ไม่ว่าจะติดตั้งรุ่นแม่มดหรือไม่ ฉันไม่รู้ว่าจะใช้ git อย่างไร ถ้าฉันมีฉันจะใช้มันแทนทุบตี
Josh

คำตอบ:


0

สิ่งนี้จะหยุดหลังจาก 9.9.9

#!/bin/bash

version=0
subversion=0
subsubversion=1

updateVersion()
{
  if [ "$subsubversion" -lt 9 ]; then
    subsubversion=$((subsubversion+1));
  elif [ "$subsubversion" = 9 ] && [ "$subversion" -lt 9 ]; then
    subsubversion="0"; subversion=$((subversion+1));
  elif [ "$subsubversion" = 9 ] && [ "$subversion" = 9 ] && [ "$version" -lt 9 ]; then
    subsubversion="0"; subversion="0"; version=$((version+1));
  else
    echo "overflow"
  fi
}

printVersion()
{
  echo "${version}.${subversion}.${subsubversion}";
}

updateVersion
printVersion

บางทีคุณอาจต้องการใช้คอมไพล์แทน?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.