Nightlies Are For Dummies.

While working on our ZIMPERIUM Mobile IPS a.k.a zIPS, I’ve decided to take a break from this heavy duty work and enjoy myself a little with building our own ZIMPERIUM ROM, eg zROM. And here is my take.


No Nightlies for you!


Some Android ROM distributions allows nightlies updates, and many users happily oblige and install them. nightly.
I don’t like waste. And imo nightlies distributed to end-users, unlike beta-testers, is a complete waste; waste of resources, bandwidth, storage, and time, which is the most expensive commodity of all. I can already imagine the average Joe XDA user quoting OMNIs’ statement that ‘“nightlies are not for end users” is over-used, and no longer valid‘ BS. And I say BS because ignoring the waste doesn’t make it disappear.

I encourage everyone to check their ROM nightly changlelogs, and I provide my own script [*] to make it easier for Joe XDA to use it also. Updating a 200MB after a few translations files got updated or a new ADB rule got enforced, is a complete nonsense. Once you actually check the daily changelogs, you will also notice one major commit title repeating itself: REVERT. Many of those testings commits gets reverted because they break something, and it takes (usually) a few days to track this down and revert the faulting commit, meanwhile, leaving Joe XDA with a feature broken, in an optimistic scenario. In a real-life scenario, some of those nightlies will leave the users with a useless brick (I do admit it’s getting more rare due to exclusion of recovery.img from nightlies and less /system/ related changes). So now we’ve added stability to the waste.

Don’t be a sheep. Stop the waste. Trust the developers to do their work, and install the minor/major versions as they, the people who really knows what is working and what is not, decides to release.


# Copyright (C) 2014 ZIMPERIUM Inc.
# 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
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# See the License for the specific language governing permissions and
# limitations under the License.

# Name :
# Descr: display logs from all repo git repositories
# Usage: <SINCE>|<DEVICE>
#        <SINCE> can be any valid git --since parameter, eg, 'yesterday'
#        or 'lastbuild' for getting logs since latest build (default)
#        <DEVICE> can be any device built already & exists in out/ dir, 
#        to show logs since latest build for this <DEVICE>
# Examples:
# To get all logs since yesterday:
# ./ yesterday
# To get all logs since latest i9300 build:
# ./ i9300
# To get all logs since latest build:
# ./

get_date() {
        find $1 -maxdepth 1 -printf "%TY-%Tm-%Td-%TT\n" | sort -nr | head -n 1 ;

case "$PARAM" in
                # get date for last repo sync
                SINCE=$(get_date ${TOP_DIR}/.repo/project.list)
                # get date for latest build of ANY device type
                SINCE=$(get_date ${TOP_DIR}/out/target/product/)
                # get date for latest build of specific device type
                SINCE=$(get_date ${TOP_DIR}/out/target/product/$1)
                if [ -z $SINCE ]; then
                        # if no device found, use PARAM as SINCE, eg 'yesterday'

repo forall -c '
        LOG=$(git log --since "'$SINCE'" --pretty=format:"%C(yellow)%ad %Cred%s%Creset%Cblue [%ce]%Creset" --decorate --date=short --numstat); 
        [ "$LOG" != "" ] && ([ "'$SHOWGITNAME'" != "" ] && TITLE=`sed -n "s/projectname.*=//p" .git/config|tr -d "[ \t]"` || TITLE="$REPO_PATH"; printf "===[ $TITLE ]";printf "%*s\n" "`expr ${COLUMNS:-$(tput cols)} - ${#TITLE} - 7`" "" | tr " " "="; echo "$LOG\n";)
' | less -FRX

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s