เวิร์กโฟลว์การควบคุมแหล่งที่มา

การทำงานกับโค้ด Android ต้องใช้ Git ซึ่งเป็นระบบควบคุมเวอร์ชันแบบโอเพนซอร์ส และ Repo ซึ่งเป็นเครื่องมือจัดการที่เก็บ ที่ Google สร้างขึ้นและทำงานบน Git หากต้องการดูคำอธิบายเกี่ยวกับความสัมพันธ์ระหว่าง Repo กับ Git รวมถึงลิงก์ไปยังเอกสารประกอบสำหรับเครื่องมือแต่ละรายการ โปรดดู เครื่องมือควบคุมแหล่งที่มา

Flow

การพัฒนา Android มีเวิร์กโฟลว์พื้นฐานดังนี้

  1. เริ่มกิ่งก้านหัวข้อใหม่โดยใช้ repo start
  2. แก้ไขไฟล์
  3. จัดเตรียมการเปลี่ยนแปลงโดยใช้ git add
  4. คอมมิตการเปลี่ยนแปลงโดยใช้ git commit
  5. อัปโหลดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ตรวจสอบโดยใช้ repo upload

งาน

การทำงานกับ Git และ Repo ในที่เก็บโค้ด Android เกี่ยวข้องกับการทำงานทั่วไปต่อไปนี้

คำสั่ง คำอธิบาย
repo init เริ่มต้นไคลเอ็นต์ใหม่
repo sync ซิงค์ไคลเอ็นต์กับที่เก็บ
repo start เริ่มกิ่งก้านใหม่
repo status แสดงสถานะของกิ่งก้านปัจจุบัน
repo upload อัปโหลดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ตรวจสอบ
git add จัดเตรียมไฟล์
git commit คอมมิตไฟล์ที่จัดเตรียมไว้
git branch แสดงกิ่งก้านปัจจุบัน
git branch [branch] สร้างกิ่งก้านหัวข้อใหม่
git checkout [branch] เปลี่ยน HEAD เป็นกิ่งก้านที่ระบุ
git merge [branch] ผสาน [branch] เข้ากับกิ่งก้านปัจจุบัน
git diff แสดงความแตกต่างของการเปลี่ยนแปลงที่ไม่ได้จัดเตรียมไว้
git diff --cached แสดงความแตกต่างของการเปลี่ยนแปลงที่จัดเตรียมไว้
git log แสดงประวัติของกิ่งก้านปัจจุบัน
git log m/[codeline].. แสดงคอมมิตที่ไม่ได้พุช

ดูข้อมูลเกี่ยวกับการใช้ Repo เพื่อดาวน์โหลดซอร์สได้ที่ การดาวน์โหลดซอร์ส และ การอ้างอิงคำสั่ง Repo

การซิงค์ไคลเอ็นต์

วิธีซิงค์ไฟล์สำหรับโปรเจ็กต์ที่มีทั้งหมด

repo sync

วิธีซิงค์ไฟล์สำหรับโปรเจ็กต์ที่เลือก

repo sync PROJECT0 PROJECT1 ... PROJECTN

การสร้างกิ่งก้านหัวข้อ

เริ่มกิ่งก้านหัวข้อในสภาพแวดล้อมการทำงานในเครื่องทุกครั้งที่เริ่มทำการเปลี่ยนแปลง เช่น เมื่อเริ่มทำงานกับข้อบกพร่องหรือฟีเจอร์ใหม่ กิ่งก้านหัวข้อ ไม่ใช่ สำเนาของไฟล์ต้นฉบับ แต่เป็นตัวชี้ไปยัง คอมมิตที่เฉพาะเจาะจง ซึ่งทำให้การสร้างกิ่งก้านในเครื่องและการสลับไปมาระหว่าง กิ่งก้านเป็นเรื่องง่าย การใช้กิ่งก้านช่วยให้คุณแยกงานด้านหนึ่งออกจาก งานด้านอื่นๆ ได้ หากต้องการอ่านบทความที่น่าสนใจเกี่ยวกับการใช้กิ่งก้านหัวข้อ โปรดดู การแยก กิ่งก้านหัวข้อ

หากต้องการเริ่มกิ่งก้านหัวข้อโดยใช้ Repo ให้ไปที่โปรเจ็กต์แล้วเรียกใช้คำสั่งต่อไปนี้

repo start BRANCH_NAME .

จุด ( .) ที่ต่อท้ายหมายถึงโปรเจ็กต์ในไดเรกทอรีที่ใช้งานปัจจุบัน

วิธีตรวจสอบว่าสร้างกิ่งก้านใหม่แล้ว

repo status .

การใช้กิ่งก้านหัวข้อ

วิธีกำหนดกิ่งก้านให้กับโปรเจ็กต์ที่เฉพาะเจาะจง

repo start BRANCH_NAME PROJECT_NAME

หากต้องการดูรายการโปรเจ็กต์ทั้งหมด โปรดไปที่ android.googlesource.com หากคุณไปที่ไดเรกทอรีโปรเจ็กต์แล้ว ให้ใช้จุดเพื่อ แสดงโปรเจ็กต์ปัจจุบัน

วิธีเปลี่ยนไปใช้กิ่งก้านอื่นในสภาพแวดล้อมการทำงานในเครื่อง

git checkout BRANCH_NAME

วิธีดูกิ่งก้านที่มีอยู่

git branch

หรือ

repo branches

ทั้ง 2 คำสั่งจะแสดงรายการกิ่งก้านที่มีอยู่ โดยมีชื่อกิ่งก้าน ปัจจุบันนำหน้าด้วยเครื่องหมายดอกจัน (*)

การจัดเตรียมไฟล์

โดยค่าเริ่มต้น Git จะสังเกตแต่ไม่ติดตามการเปลี่ยนแปลงที่คุณทำในโปรเจ็กต์ หากต้องการบอกให้ Git เก็บการเปลี่ยนแปลงไว้ คุณต้องทำเครื่องหมายหรือ จัดเตรียม การเปลี่ยนแปลง เหล่านั้นเพื่อรวมไว้ในคอมมิต

วิธีจัดเตรียมการเปลี่ยนแปลง

git add

คำสั่งนี้ยอมรับอาร์กิวเมนต์สำหรับไฟล์หรือไดเรกทอรีภายในไดเรกทอรีโปรเจ็กต์ git add ไม่ได้มีไว้สำหรับเพิ่มไฟล์ลงใน ที่เก็บ Git เท่านั้น แต่ยังใช้เพื่อจัดเตรียมการแก้ไขและการลบไฟล์ได้ด้วย

การดูสถานะไคลเอ็นต์

วิธีแสดงรายการสถานะของไฟล์

repo status

วิธีดูการแก้ไขที่ไม่ได้คอมมิต (การแก้ไขในเครื่องที่ไม่ได้ ทำเครื่องหมายเพื่อคอมมิต)

repo diff

วิธีดูการแก้ไขที่คอมมิตแล้ว (การแก้ไขในเครื่องที่ ทำเครื่องหมาย เพื่อ คอมมิต) ให้ตรวจสอบว่าคุณอยู่ในไดเรกทอรีโปรเจ็กต์แล้วเรียกใช้ git diff ด้วยอาร์กิวเมนต์ cached

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

การคอมมิตการเปลี่ยนแปลง

คอมมิต คือหน่วยพื้นฐานของการควบคุมเวอร์ชันใน Git ซึ่งประกอบด้วย สแนปชอตของโครงสร้างไดเรกทอรีและเนื้อหาไฟล์สำหรับทั้งโปรเจ็กต์ ใช้คำสั่งนี้เพื่อสร้างคอมมิตใน Git

git commit

เมื่อระบบขอให้ระบุข้อความคอมมิต ให้ระบุข้อความสั้นๆ (แต่เป็นประโยชน์) สำหรับ การเปลี่ยนแปลงที่ส่งไปยัง AOSP หากคุณไม่เพิ่มข้อความคอมมิต คอมมิตจะไม่สำเร็จ

การอัปโหลดการเปลี่ยนแปลงไปยัง Gerrit

อัปเดตเป็นเวอร์ชันล่าสุด แล้วอัปโหลดการเปลี่ยนแปลง

repo sync
repo upload

คำสั่งเหล่านี้จะแสดงรายการการเปลี่ยนแปลงที่คุณคอมมิตไว้และขอให้คุณ เลือกกิ่งก้านที่จะอัปโหลดไปยังเซิร์ฟเวอร์ตรวจสอบ หากมีกิ่งก้านเพียงกิ่งเดียว คุณจะเห็นข้อความแจ้ง y/n ง่ายๆ

การแก้ไขความขัดแย้งในการซิงค์

หากคำสั่ง repo sync แสดงความขัดแย้งในการซิงค์ ให้ทำดังนี้

  1. ดูไฟล์ที่ไม่ได้ผสาน (รหัสสถานะ = U)
  2. แก้ไขส่วนที่ขัดแย้งตามความจำเป็น
  3. เปลี่ยนเป็นไดเรกทอรีโปรเจ็กต์ที่เกี่ยวข้อง เพิ่มและคอมมิตไฟล์ที่ได้รับผลกระทบ แล้วรีเบสการเปลี่ยนแปลง
    git add .
    git commit
    git rebase --continue
    
  4. หลังจากรีเบสเสร็จสมบูรณ์ ให้เริ่มการซิงค์ทั้งหมดอีกครั้ง
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

การล้างข้อมูลไคลเอ็นต์

หลังจากผสานการเปลี่ยนแปลงไปยัง Gerrit แล้ว ให้อัปเดตไดเรกทอรีที่ใช้งานในเครื่อง จากนั้นใช้ repo prune เพื่อนำกิ่งก้านหัวข้อที่ล้าสมัยออกอย่างปลอดภัย

repo sync
repo prune

การลบไคลเอ็นต์

เนื่องจากข้อมูลสถานะทั้งหมดจัดเก็บไว้ในไคลเอ็นต์ คุณจึงต้อง ลบไดเรกทอรีออกจากระบบไฟล์เท่านั้น

rm -rf WORKING_DIRECTORY

การลบไคลเอ็นต์จะ ลบ การเปลี่ยนแปลงที่คุณยังไม่ได้ อัปโหลดเพื่อตรวจสอบอย่างถาวร