.gitignore สำหรับโปรเจ็กต์ PhoneGap / Cordova 3.0 - ฉันควรทำอะไร?


105

ฉันเพิ่งพยายามสร้างโปรเจ็กต์ phonegap 3.0 ใหม่ ... หมายเหตุ: ฉันเพิ่งเริ่มใช้ phonegap อย่างไรก็ตามฉันเห็นโฟลเดอร์โครงการประกอบด้วย:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

และเมื่อได้ลองphonegap local run androidแล้วฉันเห็นไฟล์ไบนารี / ไฟล์ที่สร้างขึ้นจำนวนมากในplatforms/android. สิ่งนี้ทำให้ฉันสงสัยว่าฉันควรเพิ่มส่วนใดของโครงสร้างโฟลเดอร์นี้ในที่เก็บ git ของฉัน โดยปกติฉันคิดว่ามันเป็นวิธีปฏิบัติที่แย่มากในการส่งไฟล์ไบนารี ดังนั้นผมปกติจะเพิ่มรูปแบบเช่นbin/, obj/, *.o, *.pycฯลฯ เพื่อ.gitignoreที่จะหลีกเลี่ยงการก่อให้เกิดมลพิษเก็บคอมไพล์ของฉันกับสิ่งที่เพียงทำหน้าที่ในการสร้างความขัดแย้งผสาน

แน่นอนว่าwwwควรเพิ่มในคอมไพล์ แต่ส่วนอื่น ๆ ของโปรเจ็กต์ล่ะ พวกเขาเป็นผลิตภัณฑ์ของซอร์สโค้ดที่ขยายออกไปเพื่ออะไรและสิ่งที่ขยายคือการกำหนดค่าโครงการ

คุณทำอะไร? จริงอยู่ที่ฉันเป็นคนใหม่ฉันจึงแทบไม่เข้าใจว่าอะไรสมเหตุสมผลที่นี่ ...


1
ฉันไม่รู้เกี่ยวกับ PhoneGap / Cordova แต่เมื่อมีข้อสงสัยให้ทำทุกอย่าง คุณสามารถลบออกได้ในภายหลังเมื่อคุณรู้ว่ามีบางสิ่งที่ไม่จำเป็น :)
Leif

คำตอบ:


43

คำตอบขึ้นอยู่กับแพลตฟอร์มที่คุณกำลังพัฒนาแอพ phongap และหากคุณทำตามโครงสร้างไดเร็กทอรีมาตรฐาน

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

ตามหลักทั่วไปคุณจะต้องยกเว้นไฟล์ที่สร้างขึ้นทั้งหมดเช่นbin/และgen/ไดเรกทอรี หากคุณกำลังพัฒนาแอปเวอร์ชัน Android คุณควรยกเว้นไฟล์บิวด์เช่น*.apkกัน

ไฟล์ที่สร้างทั้งหมดในandroidไดเร็กทอรีย่อยควรได้รับการยกเว้นด้วย:

Android/bin/
Android/gen/
Android/assets/

1
ไม่สำคัญว่าคุณกำลังพัฒนาแพลตฟอร์มใด ไม่มีอันตรายใด ๆ ที่จะเพิกเฉยต่อสิ่งต่างๆที่ใช้กับแพลตฟอร์มที่คุณยังไม่ได้พัฒนาเท่านั้น เขาบอกเป็นนัยว่าเขาใช้โครงสร้างไดเร็กทอรีมาตรฐาน
rjmunro

ปลั๊กไร้ยางอายสำหรับ Cordova gitignore ของฉัน: gist.github.com/elliot-labs/c92b3e52053906816074170ada511962
Elliot Labs LLC

49

ขยายคำตอบ @Jake Moshenko:

ฉันชอบแนวคิดในการละเว้นplatformsไดเรกทอรี ในความเป็นจริงฉันสามารถยกเว้นทั้งไดเร็กทอรีpluginsและplatformsไดเร็กทอรี จุดเริ่มต้นที่ดีสำหรับ.gitignore:

platforms/
plugins/

ปัญหานี้คือต้องเริ่มต้นสำเนา repo ทั้งหมดก่อนจึงจะสามารถใช้งานได้จริง การสร้างสคริปต์เริ่มต้นอาจเหมาะสมเช่น:

#!/bin/bash
textReset=$(tput sgr0)
textGreen=$(tput setaf 2)
message_info () {
  echo "${textGreen}[my-app]${textReset} $1"
}

message_info "Creating necessary directories..."
mkdir plugins
mkdir platforms

message_info "Adding platforms..."
# If using cordova, change to: cordova platform add android
phonegap build android
phonegap build ios

message_info "Adding plugins..."
# If using cordova, change to: cordova plugin add
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

ข้อแม้สำหรับแนวทางนี้คือทำให้การปรับแต่งโค้ด / config ของแอพเฉพาะแพลตฟอร์มนั้นเป็นเรื่องยากขึ้นเล็กน้อยนอกเหนือจากสิ่งที่ phonegap / Cordova รองรับ (เช่นการรองรับการวางแนวหน้าจอ)

อัปเดต: Bash Gist

นี้เค้ามีสคริปต์ที่สมบูรณ์มากขึ้นสำหรับการจัดการโครงการที่ไม่ได้กระทำการpluginsและplatformsไดเรกทอรี มีกลไกในการคัดลอกไอคอนและภาพหน้าจอเริ่มต้นจาก www ไปยังไดเร็กทอรีแพลตฟอร์ม (สำหรับ iOS และ Android) การติดตั้งปลั๊กอินและการจัดการไฟล์เฉพาะแพลตฟอร์มที่ควรเพิ่มในการควบคุมเวอร์ชัน

อัปเดต: Grunt Gist

นี่คือส่วนสำคัญอีกประการหนึ่งซึ่งเป็นพอร์ต Grunt ของสคริปต์ทุบตีที่กล่าวถึงข้างต้น (ขอบคุณ @obie ที่แนะนำฮึดฮัด)


2
ฉันจะจัดการกับการเพิ่มปลั๊กอินพิเศษ / โค้ดเนทีฟหรือทำการเปลี่ยนแปลง AndroidManifest.xml เพื่อรองรับการพัฒนาปลั๊กอินโดยใช้แนวทางนี้ได้อย่างไร มีที่อื่นที่สามารถเพิ่มการเปลี่ยนแปลง AndroidManifest.xml ได้หรือไม่?
obie

ดูสรุปสาระสำคัญการเชื่อมโยงโดยเฉพาะที่นี่ เขียนทับ / เพิ่มไฟล์ใด ๆ จากplatform-mergesไดเร็กทอรี platform-merges/android/AndroidManifest.xmlตัวอย่างเช่นคุณสามารถกระทำ วิธีนี้ใช้ได้ดีกับโครงการง่ายๆ แต่อาจทำให้สิ่งต่าง ๆ ในโครงการขนาดใหญ่ซับซ้อนขึ้นได้
Jonathan Dixon

ขอบคุณสำหรับความช่วยเหลือ :) ฉันลงเอยด้วยการใช้ความฮึกเหิมในการทำสิ่งเดียวกัน (ด้วยgithub.com/gruntjs/grunt-contrib-copy )
obie

3
คุณสามารถหลีกเลี่ยงขั้นตอนในการสร้างปลั๊กอินและโฟลเดอร์ของแพลตฟอร์มได้โดยการเพิ่มไฟล์. gitkeep ในแต่ละไฟล์และใส่ลงใน. gitignore ของคุณ: platforms / *! platforms / .gitkeep plugins / *! plugins / .gitkeep
aharris88

1
@ aharris88 จุดดี แต่ฉันเชื่อว่าฉันหลีกเลี่ยงสิ่งนั้นเพื่อให้ง่ายต่อการทำความสะอาดโครงการ กล่าวคือrm -rf platforms plugins.
Jonathan Dixon

7

ผมจึงคิดได้จากการลองผิดลองถูก platformsไดเรกทอรีสามารถละเว้นถ้าคุณกำลังใช้ PhoneGap ท้องถิ่นหรือระยะไกลสร้างขณะที่มันถูกสร้างขึ้นทันที .cordovaจำเป็นต้องมีโฟลเดอร์อื่น ๆ ทั้งหมดรวมถึงโฟลเดอร์ที่ซ่อนอยู่


4
สวัสดีจะเกิดอะไรขึ้นถ้าฉันใช้ไฟล์ jar ของบุคคลที่สามหรือไฟล์ซอร์ส objective-c เพื่อปรับแต่งบิวด์ android หรือ ios เช่นการรวม Parse Notification ต้องเขียนโค้ด java แน่นอนแล้วจะจัดการ git repository ได้อย่างไร? phonegap local build android จะเขียนทับไฟล์ที่กำหนดเองหรือไม่
EthanZ

FYI สำหรับฉันดูเหมือนว่า PhoneGap Build จะสร้างขึ้นโดยไม่มี.cordovaโฟลเดอร์ - ทำไมคุณถึงบอกว่าต้องใช้ @Jake Moshenko?
Matty J

7
คำแนะนำนี้ไม่ถูกต้องทั้งหมด คุณไม่ควรละเว้นไดเรกทอรีของแพลตฟอร์มเนื่องจากในที่สุดคุณจะต้องเพิ่มโค้ดและปลั๊กอินเฉพาะบางแพลตฟอร์มหากคุณกำลังทำสิ่งที่ไม่สำคัญ คุณมักจะต้องจัดการรายการ android และ ios plists
Daniel Williams

3
ฉันจะบอกว่าการละเว้นแพลตฟอร์มเป็นการเริ่มต้นที่ดี หากมีการอ้างอิงควรเก็บไว้ที่อื่นและคัดลอกเป็นขั้นตอนการสร้างหลังจากเพิ่มแพลตฟอร์ม
tishma

ฉันชอบคำตอบนี้ ฉันไม่รวมไดเร็กทอรีแพลตฟอร์มเท่านั้น
realtebo

4

ฉันแค่อยากจะทิ้งประสบการณ์ของฉันไว้ที่นี่กับปัญหานี้และแนวทางที่เราปฏิบัติตามในที่สุด

ในโปรเจ็กต์ phonegap ของเราเราเริ่มคอมมิตไฟล์ทั้งหมดน้อยกว่าโฟลเดอร์ / แพลตฟอร์มโดยใช้ไฟล์. gitignore เราคิดแบบนี้เมื่อนักพัฒนาทำการโคลนที่เก็บสิ่งเดียวที่ต้องทำคือดำเนินการ:

phonegap / Cordova เพิ่มแพลตฟอร์ม

แต่มันไม่ใช่ เมื่อเพิ่มแพลตฟอร์มและเราพยายามรวบรวมข้อผิดพลาดปรากฏขึ้นและแอปไม่ได้ติดตั้งในอุปกรณ์

เมื่อดูบันทึกเราพบว่าข้อผิดพลาดนี้เกิดจากปลั๊กอิน ดังนั้นเราจึงตัดสินใจที่จะติดตั้งปลั๊กอินทั้งหมดที่เราใช้ในโปรเจ็กต์ใหม่และทำให้แอปทำงานได้อย่างถูกต้อง

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

ด้วยวิธีนี้เมื่อนักพัฒนาทำการโคลนที่เก็บเขา / เธอจะต้อง:

1.- เพิ่มแพลตฟอร์ม: phonegap / Cordova เพิ่มแพลตฟอร์ม "แพลตฟอร์ม"

2.- เพิ่มปลั๊กอิน: ปลั๊กอิน phonegap / Cordova เพิ่ม "ปลั๊กอิน"

หวังว่านี่จะช่วยได้!

ความนับถือ.


1

สิ่งนี้หลายอย่างเก่าและไม่สามารถใช้กับ Apache Cordova เวอร์ชันล่าสุดได้ ฉันใช้ Apache Cordova 5.1.1 และ. gitignore นี้ช่วยให้ฉันยังคงปรับแต่งด้วยไอคอนที่กำหนดเองและอื่น ๆ ในขณะที่บล็อกทุกสิ่งที่เราไม่จำเป็นต้องเป็นเวอร์ชันสำหรับทั้ง Android และ IOS ใช่. gradle ใช้แล้วอย่าเอาออก!

www/
.gradle/
build/
.tmp/
.temp/
coverage/
*.log
node_modules/
bower_components/

ทำไมคุณถึงรวมwww/โฟลเดอร์ไว้ที่นั่น? ในแอปพลิเคชันของฉันนั่นเป็นสิ่งที่มีประโยชน์ส่วนใหญ่จากชีวิตของเว็บแอปพลิเคชัน
vindia

2
@vindia ฉันเดาว่ารายการของฉันอาจเป็นแม่แบบในการเริ่มต้นใครก็ได้ ฉันคิดว่าฮิปสเตอร์ทั้งหมดใช้ www / โฟลเดอร์เป็นผลลัพธ์ที่เปลี่ยนแปลงได้สำหรับกระบวนการสร้างอัตโนมัติ ความผิดฉันเอง!
Post Impatica

ฉันไม่รวมwww/เนื่องจากเนื้อหาที่สร้างโดยสคริปต์สร้างที่กำหนดเอง คุณไม่ต้องการไฟล์ต้นฉบับในนั้นจริงๆ
kim3er

0

แม้ว่าจะเป็นความชอบส่วนตัว แต่ฉันก็ใช้สิ่งนี้ (สำหรับโครงการเฉพาะ Android) การลบส่วนใหญ่ แต่ยังคงรักษาสิ่งที่กำหนดเอง

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