git: sparsecheckout: Partially pull a repo

So I got this Firefox Device (called Intex Cloud Fx) a couple of weeks back but still couldn’t switch to it (the cold turkey way) as the keyboard application is still in its infancy and I can barely type on QWERTY anymore (long sentence?)!

I decided to dive right into it. I spent my weekend trying to understand the OS better and managed to push some test applications to the device (and they worked! And I could even debug them from my browser! Cool stuff!).

The end game (more like the next goal) is to get/create a keyboard app which has the placement of keys that my mind would understand. (Think: Colemak)

To do that, I started looking around for examples and that’s when I found something and forked it immediately 🙂  test-keyboard-app

To pull that repository on my laptop was truly intimidating (it’s a full blown Operating System after all). That’s when I found out what magic git sparsecheckout could do.


$ git init repo

$ cd repo/

$ git remote add -f origin https://github.com/nikunjlahoti/gaia.git

# Updating origin
# remote: Counting objects: 356086, done.
# remote: Compressing objects: 100% (105268/105268), done.
# remote: Total 356086 (delta 245156), reused 356086 (delta 245156)
# Receiving objects: 100% (356086/356086), 817.56 MiB | 892.00 KiB/s, done.
# Resolving deltas: 100% (245156/245156), done.

$ git config core.sparsecheckout true
# Specifying the intention now

$ echo "dev_apps/test-keyboard-app/" >> .git/info/sparse-checkout
# list of directories to be included

$ git pull origin master
# From https://github.com/nikunjlahoti/gaia
# * branch master -> FETCH_HEAD

$ ls -a
dev_apps .git

# voila

#NoteToSelf #LetTheFunBegin

Intex Cloud FX: Turn Debugging On

…and the tinkering shall begin!

Well it doesn’t work out-of-the-box and this post will help other developers get their hands dirty quickly.

One can debug either by using the “adb tools” by Google or “app-manager” by Mozilla.

#1: Enable Debugging on the phone

https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Developer_settings

On your phone go to: Settings -> Device Information -> More Information -> Developer

Set: ‘Remote debugging’ to ‘ADB and Devtools’

#2: Find out the USB Vendor ID

http://developer.android.com/tools/device.html

$ lsusb
Bus 005 Device 003: ID 1782:5d04 Spreadtrum Communications Inc.

From above we found out that the VendorID=0x1782 (running `lsusb -v` gives a verbose output and prints values in Hexadecimal)

#3: Tell adb to look at this new device of ours

A) UDEV

Log in as root and create this file: /etc/udev/rules.d/51-android.rules.

$ sudo cat >> /etc/udev/rules.d/51-android.rules
# Paste:
SUBSYSTEM=="usb", ATTR{idVendor}=="1782", MODE="0666", GROUP="plugdev"
# CTRL+D to save the file

B) Restart UDEV

$ sudo /etc/init.d/udev restart

C) adb_usb.ini

$ cat >> ~/.android/adb_usb.ini
# Paste
# 1 USB VENDOR ID PER LINE.
0x1782

(You need to have adb installed before we move ahead: https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Installing_ADB)

#4: Tinkering shall begin

$ sudo adb devices

Will show you your device.

if you see something like

List of devices attached
????????????    no permissions

then

$ sudo adb kill-server
# now try adb devices again
$ adb shell
# enter the device

All well! 🙂

Intex Cloud FX:
OS Version: Intex_Cloud_FX_V07
Hardware revision: sp8810
Platform version: 28.1
Update Channel: release-spreadtrum
Buy: for INR1999/- on Snapdeal.com

Using the App Manager:
https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager

Sources:
http://developer.android.com/tools/extras/oem-usb.html
http://developer.android.com/tools/device.html
http://stackoverflow.com/questions/17763728/getting-manufacturer-vendor-id-for-adb
http://stackoverflow.com/questions/6484279/detecting-device-for-debugging-adb-does-not-work