diff --git a/docs/howto_SDK_git_cygwin.txt b/docs/howto_SDK_git_cygwin.txt new file mode 100644 index 000000000..2f890a397 --- /dev/null +++ b/docs/howto_SDK_git_cygwin.txt @@ -0,0 +1,165 @@ +Copyright (C) 2009 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +Subject: How to get the android source code using Cygwin and Git +Date: 2009/04/27 + + + +Table of content: + 1- Goals and Requirements + 2- Getting the code, the simple way + 3- SSH issues + 4- Advanced Tricks + + +------------------------- +1- Goals and Requirements +------------------------- + +This document explains how to checkout the Android source from the git +repositories under Windows. + +As stated in development/docs/howto_build_SDK.txt, one can't build the whole +Android source code under Windows. You can only build a the SDK tools for +Windows. + +There are a number of caveats in checking out the code from Git under Windows. +This document tries to explain them. + +First you will need to meet the following requirements: +- You must have Cygwin installed. + See http://www.cygwin.com/ + +- You must install Cyginw using the "Unix / Binary" mode. + If you don't do that, git will fail to properly compute some SHA1 keys. + +- You need the "git" and "curl" packages to checkout the code. + If you plan to contribute, you might want to get "gitk" also. + + Note: if you want to build the SDK, check the howto_build_SDK.txt file + for a list of extra required packages. + + +----------------------------------- +2- Getting the code, the simple way +----------------------------------- + +Out of the box, "repo" and "git" will work just fine under Cygwin: + + $ repo init -u git://android.git.kernel.org/platform/manifest.git + $ repo sync + +And you're done. You can build as explained in howto_build_SDK.txt and ignore +the rest of this document. + + +------------- +3- SSH issues +------------- + +If you maintain your own private repository using an SSH server, you might get +some "mux/ssh" errors. In this case try this: + + $ repo init -u ssh://my.private.ssh.repo/platform/manifest.git + $ export GIT_SSH=ssh + $ repo sync + + +------------------ +4- Advanced Tricks +------------------ + +There are two remaining issues with the default repo/git options: + +A- If you plan on contributing, you will notice that even after a fresh "repo +sync" some projects are marked as having modified files. This happens on the +"bionic" and the "external/iptables" project. The issue is that they have files +which have the same name yet differ only by their case-sensitivity. Since the +Windows filesystem is not case-sensitive, this confuses Git. + +Solution: we can simply ignore these projects as they are not needed to build +the Windows SDK. + +To do this you just need to create a file .repo/local_manifest.xml that +provides a list of projects to ignore: + + + + + + + + +B- The other issue is that by default repo maintains around 100+ git projects. +However most of these are not needed to build the Windows SDK. We can easily +reduce this list to around 60 projects, which will make your repo syncs a lot +faster. + +Solution: Simply ignore all projects bionic, bootable/*, external/* and +hardware/*. + +Here's a script that takes care of all these details. It performs the repo +init, creates the appropriate local_manifest.xml and does a repo sync as +needed: + +------------ +#!/bin/bash + +set -e # fail on errors + +URL=git://android.git.kernel.org/platform/manifest.git +BRANCH=donut + +if [ ! -d .repo ]; then + # repo init if there's no .repo directory + repo init -u $URL -b $BRANCH + + # create a local_manifest to exclude projects not useful to the Windows SDK + M=.repo/manifest.xml + L=.repo/local_manifest.xml + + cat > $L < + +EOF + + for i in $(grep -E "/(bionic|bootable|external|hardware)" $M | sed -s '/name/s/^.*name="\([^"]\+\)".*/\1/') ; do + echo "Ignore project $i" + echo " " >> $L + done + + cat >> $L < +EOF2 +fi + +[[ $URL != ${URL/ssh/} ]] && export GIT_SSH=ssh +repo sync +------------ + + +Simply extract this to a "my_sync.sh" file and try the following: + $ mkdir android_src + $ cd android_src + $ chmod +x mysync.sh + $ ./mysync.sh + + +-end- + + + +