PhoneGap / Cordova 3.0 프로젝트 용 .gitignore-무엇을 커밋해야합니까?


105

새로운 phonegap 3.0 프로젝트를 만들려고했습니다. 참고 : phonegap을 처음 사용합니다. 어쨌든 프로젝트 폴더에는 다음이 포함되어 있습니다.

  • .cordova
  • merges
  • platforms
  • plugins
  • www

그리고 시도한 결과 .NET phonegap local run android에서 많은 바이너리 / 생성 파일을 볼 수 platforms/android있습니다. 이로 인해이 폴더 구조의 어떤 부분을 git 저장소에 추가해야하는지 궁금합니다. 일반적으로 바이너리 파일을 커밋하는 것은 매우 좋지 않은 습관이라고 생각합니다. 따라서, 나는 일반적으로 같은 패턴을 추가 bin/, obj/, *.o, *.pyc등등 .gitignore에만 병합 충돌을 생성하는 역할을 것들로 내 자식 저장소를 오염시키지 마십시오.

확실히 wwwgit에 추가해야하지만 프로젝트의 다른 부분은 어떻습니까? 소스 코드의 제품은 무엇이며 프로젝트 구성은 무엇입니까?

너 뭐하니? 나는 새롭기 때문에 여기서 말이되는 것을 거의 이해하지 못합니다 ...


1
PhoneGap / Cordova에 대해 잘 모르지만, 의심 스러우면 모든 것을 커밋하십시오. 당신이 뭔가 : 불필요한 것을 배울 때 당신은 항상 나중에 제거 할 수 있습니다
레이프

답변:


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디렉토리 를 생략하는 아이디어를 좋아합니다 . 실제로 pluginsplatforms디렉토리를 모두 제외 할 수 있습니다. 에 대한 좋은 시작점 .gitignore:

platforms/
plugins/

이것의 문제점은 실제로 작업하기 전에 저장소의 깨끗한 사본을 초기화해야한다는 것입니다. 다음과 같은 init 스크립트를 만드는 것이 좋습니다.

#!/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

이 접근 방식에 대한주의 사항은 phonegap / cordova에서 지원하는 것 (예 : 화면 방향 지원) 외부에서 플랫폼 별 앱 코드 / 구성을 사용자 지정하는 것이 조금 더 어려워진다는 것입니다.

업데이트 : Bash Gist

요지pluginsplatforms디렉토리를 커밋하지 않는 프로젝트를 처리하기위한보다 완전한 스크립트를 포함합니다 . www에서 플랫폼 디렉토리 (iOS 및 Android 용)로 아이콘 및 스플래시 화면 이미지를 복사하고, 플러그인을 설치하고, 버전 제어에 추가해야하는 플랫폼 별 파일을 처리하는 메커니즘을 제공합니다.

업데이트 : Grunt Gist

다음은 위에서 언급 한 bash 스크립트의 Grunt 포트 인 또 다른 요점 입니다. (grunt를 제안한 @obie에게 감사드립니다).


2
이 접근 방식을 사용하여 플러그인 개발을 수용하기 위해 맞춤형 플러그인 / 네이티브 코드를 추가하거나 AndroidManifest.xml을 변경하는 방법은 무엇입니까? AndroidManifest.xml 변경 사항을 추가 할 수있는 다른 곳이 있습니까?
obie

링크 된 요점, 특히 여기를 참조 하십시오 . platform-merges디렉토리의 모든 파일을 덮어 쓰거나 추가합니다 . 예를 들어 platform-merges/android/AndroidManifest.xml. 이 접근 방식은 간단한 프로젝트에 적합하지만 대규모 프로젝트에서는 상황을 복잡하게 만들 수 있습니다.
Jonathan Dixon

도와 주셔서 감사합니다 :) 같은 일을하기 위해 grunt를 사용하게되었습니다 ( github.com/gruntjs/grunt-contrib-copy )
obie

3
각각에 .gitkeep 파일을 추가하고이를 .gitignore에 넣어 플러그인 및 플랫폼 폴더를 생성하는 단계를 피할 수 있습니다. platform / *! platforms / .gitkeep plugins / *! plugins / .gitkeep
aharris88

1
@ aharris88 좋은 지적이지만 프로젝트를 더 쉽게 청소할 수 있도록 피했다고 생각합니다. 즉 rm -rf platforms plugins.
Jonathan Dixon

7

그래서 나는 시행 착오를 통해 이것을 알아 냈습니다. platforms당신은 폰갭 로컬 또는 원격 빌드를 사용하는 경우가 즉석에서 생성되는대로 디렉토리를 생략 할 수있다. 숨겨진 폴더를 포함하여 다른 모든 폴더 .cordova가 필요합니다.


4
안녕하세요, 타사 jar 파일 또는 Objective-c 소스 파일을 사용하여 Android 또는 ios 빌드를 사용자 정의하면 어떨까요 (예 : Parse Notification 통합). 확실히 자바 코드를 작성하고 git 저장소를 관리하는 방법은 무엇입니까? phonegap local build android가 내 사용자 정의 파일을 덮어 쓰나요?
EthanZ

참고로 PhoneGap Build가 .cordova폴더 없이 빌드되는 것 같습니다. @Jake Moshenko가 필요하다고 말하는 이유는 무엇입니까?
Matty J

7
이 제안은 완전히 잘못되었습니다. 사소한 작업을 수행하는 경우 결국 일부 플랫폼 특정 코드와 플러그인을 추가해야하므로 플랫폼 디렉토리를 생략해서는 안됩니다. 또한 종종 Android 매니페스트와 ios plist를 조작해야합니다.
Daniel Williams

3
플랫폼을 생략하는 것이 좋은 시작이라고 말하고 싶습니다. 종속성이있는 경우 다른 곳에 보관하고 플랫폼을 추가 한 후 빌드 단계로 복사해야합니다.
tishma 2014

이 대답을 선호합니다. 난 단지 플랫폼에게 디렉토리를 제외하고있어
realtebo

4

이 문제에 대한 나의 경험과 우리가 마침내 따랐던 접근 방식을 여기에 남기고 싶었습니다.

phonegap 프로젝트에서 .gitignore 파일을 사용하여 / platform 폴더보다 적은 모든 파일을 커밋하기 시작했습니다. 개발자가 저장소를 복제했을 때 남은 작업은 실행하는 것 뿐이라고 생각했습니다.

phonegap / cordova 플랫폼 추가

하지만 그렇지 않았습니다. 플랫폼이 추가되고 컴파일을 시도한 후 오류가 발생하고 앱이 기기에 설치되지 않았습니다.

로그를 살펴보면이 오류가 플러그인 때문이라는 몇 가지 조회를 받았습니다. 그래서 우리는 프로젝트에서 사용하던 모든 플러그인을 다시 설치하기로 결정했고 앱이 올바르게 실행되도록했습니다.

그래서 내 조언은 폴더 플랫폼과 플러그인을 제외한 모든 콘텐츠를 저장소에 저장하는 것입니다. 프로젝트에 사용 된 플러그인 목록이있는 README 파일을 만들고 저장소에 업로드합니다.

이렇게하면 개발자가 저장소를 복제 할 때 다음을 수행해야합니다.

1.- 플랫폼 추가 : phonegap / cordova 플랫폼 "플랫폼"추가

2.- 플러그인 추가 : phonegap / cordova 플러그인 추가 "plugin"

도움이 되었기를 바랍니다!

문안 인사.


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 내 목록이 누군가를 시작하는 템플릿이 될 수 있다고 생각합니다. 나는 모든 hipster들이 www / 폴더를 자동화 된 빌드 프로세스를위한 휘발성 출력으로 사용했다고 생각했습니다. 내 잘못이야!
Helzgate 2015

www/사용자 지정 빌드 스크립트에 의해 생성 된 내용이기 때문에 제외 합니다. 거기에 소스 파일이 필요하지 않습니다.
kim3er

0

다소 개인적인 취향이긴하지만 (안드로이드 전용 프로젝트를 위해) 이것으로 갔다. 대부분 제거하지만 사용자 지정 유지

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.