Commits

Yuriy Netesov committed 59d401c Draft

+erlang protobuffs

  • Participants
  • Parent commits 98f19db

Comments (0)

Files changed (254)

apps/kissbang/src/client_acceptor.erl

 -module(client_acceptor).
 
--export([start_link/1]).
+-export([start_link/1, accept_loop/1]).
 
 start_link(Port) ->
     ListenSocket = gen_tcp:listen(Port, []),
     spawn_link(client_acceptor, accept_loop, [ListenSocket]).
 
-accept_loop(ListenSocket) ->
-    {ok, ClientSock} = gen_tcp:accept(ListenSocket),
+accept_loop(ListenSock) ->
+    {ok, ClientSock} = gen_tcp:accept(ListenSock),
     log_srv:debug("got new connection"),
     spawn_client_sock_processes(ClientSock),
     accept_loop(ListenSock).

apps/kissbang/src/gateway_srv.erl

 %% @end
 %%--------------------------------------------------------------------
 route_message(Origin, Message) ->
-    gen_server:cast(Origin#origin.node, ?SERVER, {route_message, Origin, Messages}),
+    gen_server:cast(Origin#origin.node, ?SERVER, {route_message, Origin, Message}),
     ok.
 
 %%--------------------------------------------------------------------
     origin_controller:disconnect(Origin),
     {noreply, State};
 handle_cast({route_message, Origin, Message}, State) ->
-    origin_controller:route_message(Origin, Messages),
+    origin_controller:route_message(Origin, Message),
     {noreply, State};
 handle_cast({handle_origin_message, Origin, Message}, State) ->
     handlemgr_srv:handle_origin_message(Origin, Message),

apps/kissbang/src/proxy_srv.erl

 
 inner_drop_origin(Origin) ->
     Trans = fun() ->
-                    Existance = qlc:e(qlc:q(X || X <- mnesia:table(user_origin),
-                                                 X#user_origin.origin == Origin)),
+                    Existance = qlc:e(qlc:q([X || X <- mnesia:table(user_origin), X#user_origin.origin == Origin])),  
                     case Existance of
                         [] ->
                             unknown_origin;
                         [UserOrigin] ->
-                            mnesia:delete({user_origin, Guid}),
+%                            mnesia:delete({user_origin, UserOrigin#user_origin.guid}),
                             {ok, UserOrigin#user_origin.origin}
                         end
             end,

common/kissbang.proto

+package kissbang;
+
+message Authenticate {
+	required string login = 1;
+	required string password = 2;
+}
+
+message GameMessage {
+	extensions 1000 to max;
+	enum MessageType {
+		
+	};
+	required Type message_type = 1;
+}

extern/erlang_protobuffs/.git/HEAD

+ref: refs/heads/master

extern/erlang_protobuffs/.git/config

+[core]
+	repositoryformatversion = 0
+	filemode = true
+	bare = false
+	logallrefupdates = true
+[remote "origin"]
+	fetch = +refs/heads/*:refs/remotes/origin/*
+	url = https://github.com/basho/erlang_protobuffs.git
+[branch "master"]
+	remote = origin
+	merge = refs/heads/master

extern/erlang_protobuffs/.git/description

+Unnamed repository; edit this file 'description' to name the repository.

extern/erlang_protobuffs/.git/hooks/applypatch-msg.sample

+#!/bin/sh
+#
+# An example hook script to check the commit log message taken by
+# applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.  The hook is
+# allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "applypatch-msg".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/commit-msg" &&
+	exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
+:

extern/erlang_protobuffs/.git/hooks/commit-msg.sample

+#!/bin/sh
+#
+# An example hook script to check the commit log message.
+# Called by "git commit" with one argument, the name of the file
+# that has the commit message.  The hook should exit with non-zero
+# status after issuing an appropriate message if it wants to stop the
+# commit.  The hook is allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "commit-msg".
+
+# Uncomment the below to add a Signed-off-by line to the message.
+# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
+# hook is more suited to it.
+#
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
+
+# This example catches duplicate Signed-off-by lines.
+
+test "" = "$(grep '^Signed-off-by: ' "$1" |
+	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || {
+	echo >&2 Duplicate Signed-off-by lines.
+	exit 1
+}

extern/erlang_protobuffs/.git/hooks/post-commit.sample

+#!/bin/sh
+#
+# An example hook script that is called after a successful
+# commit is made.
+#
+# To enable this hook, rename this file to "post-commit".
+
+: Nothing

extern/erlang_protobuffs/.git/hooks/post-receive.sample

+#!/bin/sh
+#
+# An example hook script for the "post-receive" event.
+#
+# The "post-receive" script is run after receive-pack has accepted a pack
+# and the repository has been updated.  It is passed arguments in through
+# stdin in the form
+#  <oldrev> <newrev> <refname>
+# For example:
+#  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
+#
+# see contrib/hooks/ for a sample, or uncomment the next line and
+# rename the file to "post-receive".
+
+#. /usr/share/doc/git-core/contrib/hooks/post-receive-email

extern/erlang_protobuffs/.git/hooks/post-update.sample

+#!/bin/sh
+#
+# An example hook script to prepare a packed repository for use over
+# dumb transports.
+#
+# To enable this hook, rename this file to "post-update".
+
+exec git update-server-info

extern/erlang_protobuffs/.git/hooks/pre-applypatch.sample

+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed
+# by applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-applypatch".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/pre-commit" &&
+	exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
+:

extern/erlang_protobuffs/.git/hooks/pre-commit.sample

+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed.
+# Called by "git commit" with no arguments.  The hook should
+# exit with non-zero status after issuing an appropriate message if
+# it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-commit".
+
+if git rev-parse --verify HEAD >/dev/null 2>&1
+then
+	against=HEAD
+else
+	# Initial commit: diff against an empty tree object
+	against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+fi
+
+# If you want to allow non-ascii filenames set this variable to true.
+allownonascii=$(git config hooks.allownonascii)
+
+# Cross platform projects tend to avoid non-ascii filenames; prevent
+# them from being added to the repository. We exploit the fact that the
+# printable range starts at the space character and ends with tilde.
+if [ "$allownonascii" != "true" ] &&
+	# Note that the use of brackets around a tr range is ok here, (it's
+	# even required, for portability to Solaris 10's /usr/bin/tr), since
+	# the square bracket bytes happen to fall in the designated range.
+	test "$(git diff --cached --name-only --diff-filter=A -z $against |
+	  LC_ALL=C tr -d '[ -~]\0')"
+then
+	echo "Error: Attempt to add a non-ascii file name."
+	echo
+	echo "This can cause problems if you want to work"
+	echo "with people on other platforms."
+	echo
+	echo "To be portable it is advisable to rename the file ..."
+	echo
+	echo "If you know what you are doing you can disable this"
+	echo "check using:"
+	echo
+	echo "  git config hooks.allownonascii true"
+	echo
+	exit 1
+fi
+
+exec git diff-index --check --cached $against --

extern/erlang_protobuffs/.git/hooks/pre-rebase.sample

+#!/bin/sh
+#
+# Copyright (c) 2006, 2008 Junio C Hamano
+#
+# The "pre-rebase" hook is run just before "git rebase" starts doing
+# its job, and can prevent the command from running by exiting with
+# non-zero status.
+#
+# The hook is called with the following parameters:
+#
+# $1 -- the upstream the series was forked from.
+# $2 -- the branch being rebased (or empty when rebasing the current branch).
+#
+# This sample shows how to prevent topic branches that are already
+# merged to 'next' branch from getting rebased, because allowing it
+# would result in rebasing already published history.
+
+publish=next
+basebranch="$1"
+if test "$#" = 2
+then
+	topic="refs/heads/$2"
+else
+	topic=`git symbolic-ref HEAD` ||
+	exit 0 ;# we do not interrupt rebasing detached HEAD
+fi
+
+case "$topic" in
+refs/heads/??/*)
+	;;
+*)
+	exit 0 ;# we do not interrupt others.
+	;;
+esac
+
+# Now we are dealing with a topic branch being rebased
+# on top of master.  Is it OK to rebase it?
+
+# Does the topic really exist?
+git show-ref -q "$topic" || {
+	echo >&2 "No such branch $topic"
+	exit 1
+}
+
+# Is topic fully merged to master?
+not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
+if test -z "$not_in_master"
+then
+	echo >&2 "$topic is fully merged to master; better remove it."
+	exit 1 ;# we could allow it, but there is no point.
+fi
+
+# Is topic ever merged to next?  If so you should not be rebasing it.
+only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
+only_next_2=`git rev-list ^master           ${publish} | sort`
+if test "$only_next_1" = "$only_next_2"
+then
+	not_in_topic=`git rev-list "^$topic" master`
+	if test -z "$not_in_topic"
+	then
+		echo >&2 "$topic is already up-to-date with master"
+		exit 1 ;# we could allow it, but there is no point.
+	else
+		exit 0
+	fi
+else
+	not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
+	/usr/bin/env perl -e '
+		my $topic = $ARGV[0];
+		my $msg = "* $topic has commits already merged to public branch:\n";
+		my (%not_in_next) = map {
+			/^([0-9a-f]+) /;
+			($1 => 1);
+		} split(/\n/, $ARGV[1]);
+		for my $elem (map {
+				/^([0-9a-f]+) (.*)$/;
+				[$1 => $2];
+			} split(/\n/, $ARGV[2])) {
+			if (!exists $not_in_next{$elem->[0]}) {
+				if ($msg) {
+					print STDERR $msg;
+					undef $msg;
+				}
+				print STDERR " $elem->[1]\n";
+			}
+		}
+	' "$topic" "$not_in_next" "$not_in_master"
+	exit 1
+fi
+
+exit 0
+
+################################################################
+
+This sample hook safeguards topic branches that have been
+published from being rewound.
+
+The workflow assumed here is:
+
+ * Once a topic branch forks from "master", "master" is never
+   merged into it again (either directly or indirectly).
+
+ * Once a topic branch is fully cooked and merged into "master",
+   it is deleted.  If you need to build on top of it to correct
+   earlier mistakes, a new topic branch is created by forking at
+   the tip of the "master".  This is not strictly necessary, but
+   it makes it easier to keep your history simple.
+
+ * Whenever you need to test or publish your changes to topic
+   branches, merge them into "next" branch.
+
+The script, being an example, hardcodes the publish branch name
+to be "next", but it is trivial to make it configurable via
+$GIT_DIR/config mechanism.
+
+With this workflow, you would want to know:
+
+(1) ... if a topic branch has ever been merged to "next".  Young
+    topic branches can have stupid mistakes you would rather
+    clean up before publishing, and things that have not been
+    merged into other branches can be easily rebased without
+    affecting other people.  But once it is published, you would
+    not want to rewind it.
+
+(2) ... if a topic branch has been fully merged to "master".
+    Then you can delete it.  More importantly, you should not
+    build on top of it -- other people may already want to
+    change things related to the topic as patches against your
+    "master", so if you need further changes, it is better to
+    fork the topic (perhaps with the same name) afresh from the
+    tip of "master".
+
+Let's look at this example:
+
+		   o---o---o---o---o---o---o---o---o---o "next"
+		  /       /           /           /
+		 /   a---a---b A     /           /
+		/   /               /           /
+	       /   /   c---c---c---c B         /
+	      /   /   /             \         /
+	     /   /   /   b---b C     \       /
+	    /   /   /   /             \     /
+    ---o---o---o---o---o---o---o---o---o---o---o "master"
+
+
+A, B and C are topic branches.
+
+ * A has one fix since it was merged up to "next".
+
+ * B has finished.  It has been fully merged up to "master" and "next",
+   and is ready to be deleted.
+
+ * C has not merged to "next" at all.
+
+We would want to allow C to be rebased, refuse A, and encourage
+B to be deleted.
+
+To compute (1):
+
+	git rev-list ^master ^topic next
+	git rev-list ^master        next
+
+	if these match, topic has not merged in next at all.
+
+To compute (2):
+
+	git rev-list master..topic
+
+	if this is empty, it is fully merged to "master".

extern/erlang_protobuffs/.git/hooks/prepare-commit-msg.sample

+#!/bin/sh
+#
+# An example hook script to prepare the commit log message.
+# Called by "git commit" with the name of the file that has the
+# commit message, followed by the description of the commit
+# message's source.  The hook's purpose is to edit the commit
+# message file.  If the hook fails with a non-zero status,
+# the commit is aborted.
+#
+# To enable this hook, rename this file to "prepare-commit-msg".
+
+# This hook includes three examples.  The first comments out the
+# "Conflicts:" part of a merge commit.
+#
+# The second includes the output of "git diff --name-status -r"
+# into the message, just before the "git status" output.  It is
+# commented because it doesn't cope with --amend or with squashed
+# commits.
+#
+# The third example adds a Signed-off-by line to the message, that can
+# still be edited.  This is rarely a good idea.
+
+case "$2,$3" in
+  merge,)
+    /usr/bin/env perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
+
+# ,|template,)
+#   /usr/bin/env perl -i.bak -pe '
+#      print "\n" . `git diff --cached --name-status -r`
+#	 if /^#/ && $first++ == 0' "$1" ;;
+
+  *) ;;
+esac
+
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"

extern/erlang_protobuffs/.git/hooks/update.sample

+#!/bin/sh
+#
+# An example hook script to blocks unannotated tags from entering.
+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
+#
+# To enable this hook, rename this file to "update".
+#
+# Config
+# ------
+# hooks.allowunannotated
+#   This boolean sets whether unannotated tags will be allowed into the
+#   repository.  By default they won't be.
+# hooks.allowdeletetag
+#   This boolean sets whether deleting tags will be allowed in the
+#   repository.  By default they won't be.
+# hooks.allowmodifytag
+#   This boolean sets whether a tag may be modified after creation. By default
+#   it won't be.
+# hooks.allowdeletebranch
+#   This boolean sets whether deleting branches will be allowed in the
+#   repository.  By default they won't be.
+# hooks.denycreatebranch
+#   This boolean sets whether remotely creating branches will be denied
+#   in the repository.  By default this is allowed.
+#
+
+# --- Command line
+refname="$1"
+oldrev="$2"
+newrev="$3"
+
+# --- Safety check
+if [ -z "$GIT_DIR" ]; then
+	echo "Don't run this script from the command line." >&2
+	echo " (if you want, you could supply GIT_DIR then run" >&2
+	echo "  $0 <ref> <oldrev> <newrev>)" >&2
+	exit 1
+fi
+
+if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+	echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
+	exit 1
+fi
+
+# --- Config
+allowunannotated=$(git config --bool hooks.allowunannotated)
+allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
+denycreatebranch=$(git config --bool hooks.denycreatebranch)
+allowdeletetag=$(git config --bool hooks.allowdeletetag)
+allowmodifytag=$(git config --bool hooks.allowmodifytag)
+
+# check for no description
+projectdesc=$(sed -e '1q' "$GIT_DIR/description")
+case "$projectdesc" in
+"Unnamed repository"* | "")
+	echo "*** Project description file hasn't been set" >&2
+	exit 1
+	;;
+esac
+
+# --- Check types
+# if $newrev is 0000...0000, it's a commit to delete a ref.
+zero="0000000000000000000000000000000000000000"
+if [ "$newrev" = "$zero" ]; then
+	newrev_type=delete
+else
+	newrev_type=$(git cat-file -t $newrev)
+fi
+
+case "$refname","$newrev_type" in
+	refs/tags/*,commit)
+		# un-annotated tag
+		short_refname=${refname##refs/tags/}
+		if [ "$allowunannotated" != "true" ]; then
+			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
+			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
+			exit 1
+		fi
+		;;
+	refs/tags/*,delete)
+		# delete tag
+		if [ "$allowdeletetag" != "true" ]; then
+			echo "*** Deleting a tag is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/tags/*,tag)
+		# annotated tag
+		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
+		then
+			echo "*** Tag '$refname' already exists." >&2
+			echo "*** Modifying a tag is not allowed in this repository." >&2
+			exit 1
+		fi
+		;;
+	refs/heads/*,commit)
+		# branch
+		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
+			echo "*** Creating a branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/heads/*,delete)
+		# delete branch
+		if [ "$allowdeletebranch" != "true" ]; then
+			echo "*** Deleting a branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/remotes/*,commit)
+		# tracking branch
+		;;
+	refs/remotes/*,delete)
+		# delete tracking branch
+		if [ "$allowdeletebranch" != "true" ]; then
+			echo "*** Deleting a tracking branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	*)
+		# Anything else (is there anything else?)
+		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
+		exit 1
+		;;
+esac
+
+# --- Finished
+exit 0

extern/erlang_protobuffs/.git/index

Binary file added.

extern/erlang_protobuffs/.git/info/exclude

+# git ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+# For a project mostly in C, the following would be a good set of
+# exclude patterns (uncomment them if you want to use them):
+# *.[oa]
+# *~

extern/erlang_protobuffs/.git/logs/HEAD

+0000000000000000000000000000000000000000 c783cdb5c47d2a84d1de45b93ec1d15e29f4c1be dehun <dehun@localhost.(none)> 1338552152 +0000	clone: from https://github.com/basho/erlang_protobuffs.git

extern/erlang_protobuffs/.git/logs/refs/heads/master

+0000000000000000000000000000000000000000 c783cdb5c47d2a84d1de45b93ec1d15e29f4c1be dehun <dehun@localhost.(none)> 1338552152 +0000	clone: from https://github.com/basho/erlang_protobuffs.git

extern/erlang_protobuffs/.git/objects/pack/pack-8b89afdaecef18bfd68ca0e77fd6388b6c860f71.idx

Binary file added.

extern/erlang_protobuffs/.git/objects/pack/pack-8b89afdaecef18bfd68ca0e77fd6388b6c860f71.pack

Binary file added.

extern/erlang_protobuffs/.git/packed-refs

+# pack-refs with: peeled 
+762fd0af688ddfb114f336e629c4e87aeaa59d9e refs/tags/protobuffs-0.6.0
+69902c7134dc30536d3528c5a8108cd1903d7fc7 refs/tags/protobuffs-0.5.1
+55ff2683dd3c4502b4d9433a1d0ce5910b76fb7e refs/tags/protobuffs-0.5.0
+d7bf745b7bb3ed8149a7195f9712e1b02c1bb731 refs/tags/RELEASE_4
+70bd65f66beac07d1dd171ae3fd2d809e0a33ad0 refs/remotes/origin/sdc-skip-unknown-fields-rb
+87e5a53c0eaa1e80e89f233198f5259238472447 refs/remotes/origin/sdc-skip-unknown-fields
+7cf8fcd5a88be211058c8e872ec95bc644d5ecdf refs/remotes/origin/sdc-protect-imports-rb
+b43bf487704fcb1da3ced216beb1fb647020a7e1 refs/remotes/origin/sdc-protect-imports
+21eed0ef35c35124a800cf6d8ef339e8dae9ef24 refs/remotes/origin/sdc-merge-upstream
+c783cdb5c47d2a84d1de45b93ec1d15e29f4c1be refs/remotes/origin/master
+1cc2145db164908dfe1bc7d5ef3f6088fc787690 refs/remotes/origin/dip-misc-cleanup
+762fd0af688ddfb114f336e629c4e87aeaa59d9e refs/remotes/origin/az2-merge-protobuffs-with-upstream

extern/erlang_protobuffs/.git/refs/heads/master

+c783cdb5c47d2a84d1de45b93ec1d15e29f4c1be

extern/erlang_protobuffs/.git/refs/remotes/origin/HEAD

+ref: refs/remotes/origin/master

extern/erlang_protobuffs/.gitignore

+ebin
+*.beam
+*.gz
+*~
+doc
+logs
+deps
+.eunit
+.directory
+src/protobuffs_parser.erl
+src/protobuffs_scanner.erl
+erl_crash.dump

extern/erlang_protobuffs/.hgtags

+5da178c0eb6d0d6798b58e993145ecf0a9cf0134 RELEASE_4
+4bb2e333c0093c4eb5cc6186fbb420d8a98b66b8 protobuffs-0.5.0

extern/erlang_protobuffs/AUTHORS

+Nick Gerakines
+Jacob Vorreuter
+erlrc integration by Cliff Moon

extern/erlang_protobuffs/ChangeLog

+* Thu Dec 03 2009 Anthony Molinaro <anthony.molinaro@openx.org> 0.0.1
+- Fixed path for unit tests
+- Have .gitignore ignore all generated files
+- Fixed bool type, they were being improperly left as 0 and 1 instead of using
+  the true and false atoms
+- Nested types should now work according to spec (as much as there is one)
+- Fixed bool defaults, they were being improperly scanned, so falling back to
+  keywords
+* freke <davabe@hotmail.com>
+- Fixed enum support
+- Changed build system to Rake
+- Added QuickCheck tests
+- Changed so parsing of proto files is done by leex and yecc

extern/erlang_protobuffs/Makefile

+REBAR=`which rebar` || ./rebar
+
+all: get-deps compile
+
+get-deps:
+	@$(REBAR) get-deps
+
+compile:
+	@$(REBAR) compile
+
+ct:
+	@$(REBAR) skip_deps=true ct
+
+eunit:
+	@$(REBAR) skip_deps=true eunit
+
+test: eunit ct
+
+clean:
+	@$(REBAR) clean

extern/erlang_protobuffs/README.markdown

+# README
+
+This module is a composite of other open source modules and original code to
+make interfacing with the Protocol Buffers protocol easy.
+
+## Encode / Decode
+
+Encoding is simple.
+
+    1> protobuffs:encode(1, 1, uint32).
+    <<8,1>>
+    2> erlang:iolist_to_binary([
+        protobuffs:encode(1, <<"Nick">>, string),
+        protobuffs:encode(2, 25, uint32)
+    ]).
+    <<10,4,78,105,99,107,16,25>>
+
+Decoding is simple too.
+
+    1> protobuffs:decode(<<8, 1>>, uint32).
+    {{1, 1}, <<>>}
+    2> protobuffs:decode(<<10,4,78,105,99,107,16,25>>, bytes).
+    {{1, <<"Nick">>}, <<16,25>>}
+    3> protobuffs:decode(<<16,25>>, bytes).
+    {{2, 25}, <<>>}
+
+## Using .proto Files
+
+The main objective of this module is to allow developers to use .proto files
+easily. This module provides very basic functionality to do so.
+
+Consider the `t/simple.proto` file.
+
+    message Person {
+    	required string name = 1;
+    	required string address = 2;
+    	required string phone_number = 3;
+    	required int32 age = 4;
+    }
+
+From that file we can create an Erlang module that can encode and decode the
+Person message into records.
+
+    1> protobuffs_compile:scan_file("simple.proto").
+    ok
+	2> simple_pb:decode_person(<<10,4,78,105,99,107,18,13,77,111,...>>).
+	{person,<<"Nick">>,<<"Mountain View">>, <<"+1 (000) 555-1234">>,25}
+	3> simple_pb:encode_person({person, <<"Nick">>, <<"Mountain View">>,
+	    <<"+1 (000) 555-1234">>,25}).
+	<<10,4,78,105,99,107,18,13,77,111,117,110,116,97,105,110,32,86,105,...>>
+
+How cool is that? From .proto files, we create modules that export encode and
+decode functions for the messages defined.
+
+## CAVEATS
+
+Support for parsing proto files and creating code from it is volatile and
+should be considered alpha software at best. Please do not use this in production.
+
+## no_debug_info
+
+The protobuffs_compile module relies on the pokemon_pb module being compiled
+with debug info. This is because pokemon_pb serves as a template for generated
+_pb modules. Running protobuffs_compile:scan_file/1 reads the erlang forms from
+the pokemon_pb.beam file and expands and alters those forms to create the generated
+module.
+
+## Building with rebar
+To compile
+    %>./rebar compile
+
+To run all tests
+    %>./rebar eunit
+    %>./rebar ct
+
+Se rebar doc for more information.
+
+## CREDITS
+
+Some of the protobuffs.erl module came from code written by Brian Buchanan.
+
+Some of the protobuffs\_compile.erl module came from code written by Tim
+Fletcher.
+
+The rest of it and it's test suite was written by Nick Gerakines. Major
+contributions have been made by Jacob Vorreuter.

extern/erlang_protobuffs/bin/protoc-erl

+#!/usr/bin/env escript
+%% -*- erlang -*-
+%%! -sasl errlog_type error -boot start_sasl -noshell
+
+main ([File]) ->
+  protobuffs_compile:generate_source (File);
+main (_) ->
+  io:format ("usage: ~s <protofile>~n",
+             [filename:basename (escript:script_name())]),
+  halt (1).

extern/erlang_protobuffs/cover.spec

+{level,details}.
+{incl_mods,
+    [protobuffs,
+     protobuffs_compile,
+     protobuffs_file]}.

extern/erlang_protobuffs/deps/meck/.git/HEAD

+d6230ae6acabfebaebf18fb08281659d1794ce2c

extern/erlang_protobuffs/deps/meck/.git/config

+[core]
+	repositoryformatversion = 0
+	filemode = true
+	bare = false
+	logallrefupdates = true
+[remote "origin"]
+	fetch = +refs/heads/*:refs/remotes/origin/*
+	url = https://github.com/eproxus/meck.git
+[branch "master"]
+	remote = origin
+	merge = refs/heads/master

extern/erlang_protobuffs/deps/meck/.git/description

+Unnamed repository; edit this file 'description' to name the repository.

extern/erlang_protobuffs/deps/meck/.git/hooks/applypatch-msg.sample

+#!/bin/sh
+#
+# An example hook script to check the commit log message taken by
+# applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.  The hook is
+# allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "applypatch-msg".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/commit-msg" &&
+	exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
+:

extern/erlang_protobuffs/deps/meck/.git/hooks/commit-msg.sample

+#!/bin/sh
+#
+# An example hook script to check the commit log message.
+# Called by "git commit" with one argument, the name of the file
+# that has the commit message.  The hook should exit with non-zero
+# status after issuing an appropriate message if it wants to stop the
+# commit.  The hook is allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "commit-msg".
+
+# Uncomment the below to add a Signed-off-by line to the message.
+# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
+# hook is more suited to it.
+#
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
+
+# This example catches duplicate Signed-off-by lines.
+
+test "" = "$(grep '^Signed-off-by: ' "$1" |
+	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || {
+	echo >&2 Duplicate Signed-off-by lines.
+	exit 1
+}

extern/erlang_protobuffs/deps/meck/.git/hooks/post-commit.sample

+#!/bin/sh
+#
+# An example hook script that is called after a successful
+# commit is made.
+#
+# To enable this hook, rename this file to "post-commit".
+
+: Nothing

extern/erlang_protobuffs/deps/meck/.git/hooks/post-receive.sample

+#!/bin/sh
+#
+# An example hook script for the "post-receive" event.
+#
+# The "post-receive" script is run after receive-pack has accepted a pack
+# and the repository has been updated.  It is passed arguments in through
+# stdin in the form
+#  <oldrev> <newrev> <refname>
+# For example:
+#  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
+#
+# see contrib/hooks/ for a sample, or uncomment the next line and
+# rename the file to "post-receive".
+
+#. /usr/share/doc/git-core/contrib/hooks/post-receive-email

extern/erlang_protobuffs/deps/meck/.git/hooks/post-update.sample

+#!/bin/sh
+#
+# An example hook script to prepare a packed repository for use over
+# dumb transports.
+#
+# To enable this hook, rename this file to "post-update".
+
+exec git update-server-info

extern/erlang_protobuffs/deps/meck/.git/hooks/pre-applypatch.sample

+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed
+# by applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-applypatch".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/pre-commit" &&
+	exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
+:

extern/erlang_protobuffs/deps/meck/.git/hooks/pre-commit.sample

+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed.
+# Called by "git commit" with no arguments.  The hook should
+# exit with non-zero status after issuing an appropriate message if
+# it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-commit".
+
+if git rev-parse --verify HEAD >/dev/null 2>&1
+then
+	against=HEAD
+else
+	# Initial commit: diff against an empty tree object
+	against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+fi
+
+# If you want to allow non-ascii filenames set this variable to true.
+allownonascii=$(git config hooks.allownonascii)
+
+# Cross platform projects tend to avoid non-ascii filenames; prevent
+# them from being added to the repository. We exploit the fact that the
+# printable range starts at the space character and ends with tilde.
+if [ "$allownonascii" != "true" ] &&
+	# Note that the use of brackets around a tr range is ok here, (it's
+	# even required, for portability to Solaris 10's /usr/bin/tr), since
+	# the square bracket bytes happen to fall in the designated range.
+	test "$(git diff --cached --name-only --diff-filter=A -z $against |
+	  LC_ALL=C tr -d '[ -~]\0')"
+then
+	echo "Error: Attempt to add a non-ascii file name."
+	echo
+	echo "This can cause problems if you want to work"
+	echo "with people on other platforms."
+	echo
+	echo "To be portable it is advisable to rename the file ..."
+	echo
+	echo "If you know what you are doing you can disable this"
+	echo "check using:"
+	echo
+	echo "  git config hooks.allownonascii true"
+	echo
+	exit 1
+fi
+
+exec git diff-index --check --cached $against --

extern/erlang_protobuffs/deps/meck/.git/hooks/pre-rebase.sample

+#!/bin/sh
+#
+# Copyright (c) 2006, 2008 Junio C Hamano
+#
+# The "pre-rebase" hook is run just before "git rebase" starts doing
+# its job, and can prevent the command from running by exiting with
+# non-zero status.
+#
+# The hook is called with the following parameters:
+#
+# $1 -- the upstream the series was forked from.
+# $2 -- the branch being rebased (or empty when rebasing the current branch).
+#
+# This sample shows how to prevent topic branches that are already
+# merged to 'next' branch from getting rebased, because allowing it
+# would result in rebasing already published history.
+
+publish=next
+basebranch="$1"
+if test "$#" = 2
+then
+	topic="refs/heads/$2"
+else
+	topic=`git symbolic-ref HEAD` ||
+	exit 0 ;# we do not interrupt rebasing detached HEAD
+fi
+
+case "$topic" in
+refs/heads/??/*)
+	;;
+*)
+	exit 0 ;# we do not interrupt others.
+	;;
+esac
+
+# Now we are dealing with a topic branch being rebased
+# on top of master.  Is it OK to rebase it?
+
+# Does the topic really exist?
+git show-ref -q "$topic" || {
+	echo >&2 "No such branch $topic"
+	exit 1
+}
+
+# Is topic fully merged to master?
+not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
+if test -z "$not_in_master"
+then
+	echo >&2 "$topic is fully merged to master; better remove it."
+	exit 1 ;# we could allow it, but there is no point.
+fi
+
+# Is topic ever merged to next?  If so you should not be rebasing it.
+only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
+only_next_2=`git rev-list ^master           ${publish} | sort`
+if test "$only_next_1" = "$only_next_2"
+then
+	not_in_topic=`git rev-list "^$topic" master`
+	if test -z "$not_in_topic"
+	then
+		echo >&2 "$topic is already up-to-date with master"
+		exit 1 ;# we could allow it, but there is no point.
+	else
+		exit 0
+	fi
+else
+	not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
+	/usr/bin/env perl -e '
+		my $topic = $ARGV[0];
+		my $msg = "* $topic has commits already merged to public branch:\n";
+		my (%not_in_next) = map {
+			/^([0-9a-f]+) /;
+			($1 => 1);
+		} split(/\n/, $ARGV[1]);
+		for my $elem (map {
+				/^([0-9a-f]+) (.*)$/;
+				[$1 => $2];
+			} split(/\n/, $ARGV[2])) {
+			if (!exists $not_in_next{$elem->[0]}) {
+				if ($msg) {
+					print STDERR $msg;
+					undef $msg;
+				}
+				print STDERR " $elem->[1]\n";
+			}
+		}
+	' "$topic" "$not_in_next" "$not_in_master"
+	exit 1
+fi
+
+exit 0
+
+################################################################
+
+This sample hook safeguards topic branches that have been
+published from being rewound.
+
+The workflow assumed here is:
+
+ * Once a topic branch forks from "master", "master" is never
+   merged into it again (either directly or indirectly).
+
+ * Once a topic branch is fully cooked and merged into "master",
+   it is deleted.  If you need to build on top of it to correct
+   earlier mistakes, a new topic branch is created by forking at
+   the tip of the "master".  This is not strictly necessary, but
+   it makes it easier to keep your history simple.
+
+ * Whenever you need to test or publish your changes to topic
+   branches, merge them into "next" branch.
+
+The script, being an example, hardcodes the publish branch name
+to be "next", but it is trivial to make it configurable via
+$GIT_DIR/config mechanism.
+
+With this workflow, you would want to know:
+
+(1) ... if a topic branch has ever been merged to "next".  Young
+    topic branches can have stupid mistakes you would rather
+    clean up before publishing, and things that have not been
+    merged into other branches can be easily rebased without
+    affecting other people.  But once it is published, you would
+    not want to rewind it.
+
+(2) ... if a topic branch has been fully merged to "master".
+    Then you can delete it.  More importantly, you should not
+    build on top of it -- other people may already want to
+    change things related to the topic as patches against your
+    "master", so if you need further changes, it is better to
+    fork the topic (perhaps with the same name) afresh from the
+    tip of "master".
+
+Let's look at this example:
+
+		   o---o---o---o---o---o---o---o---o---o "next"
+		  /       /           /           /
+		 /   a---a---b A     /           /
+		/   /               /           /
+	       /   /   c---c---c---c B         /
+	      /   /   /             \         /
+	     /   /   /   b---b C     \       /
+	    /   /   /   /             \     /
+    ---o---o---o---o---o---o---o---o---o---o---o "master"
+
+
+A, B and C are topic branches.
+
+ * A has one fix since it was merged up to "next".
+
+ * B has finished.  It has been fully merged up to "master" and "next",
+   and is ready to be deleted.
+
+ * C has not merged to "next" at all.
+
+We would want to allow C to be rebased, refuse A, and encourage
+B to be deleted.
+
+To compute (1):
+
+	git rev-list ^master ^topic next
+	git rev-list ^master        next
+
+	if these match, topic has not merged in next at all.
+
+To compute (2):
+
+	git rev-list master..topic
+
+	if this is empty, it is fully merged to "master".

extern/erlang_protobuffs/deps/meck/.git/hooks/prepare-commit-msg.sample

+#!/bin/sh
+#
+# An example hook script to prepare the commit log message.
+# Called by "git commit" with the name of the file that has the
+# commit message, followed by the description of the commit
+# message's source.  The hook's purpose is to edit the commit
+# message file.  If the hook fails with a non-zero status,
+# the commit is aborted.
+#
+# To enable this hook, rename this file to "prepare-commit-msg".
+
+# This hook includes three examples.  The first comments out the
+# "Conflicts:" part of a merge commit.
+#
+# The second includes the output of "git diff --name-status -r"
+# into the message, just before the "git status" output.  It is
+# commented because it doesn't cope with --amend or with squashed
+# commits.
+#
+# The third example adds a Signed-off-by line to the message, that can
+# still be edited.  This is rarely a good idea.
+
+case "$2,$3" in
+  merge,)
+    /usr/bin/env perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
+
+# ,|template,)
+#   /usr/bin/env perl -i.bak -pe '
+#      print "\n" . `git diff --cached --name-status -r`
+#	 if /^#/ && $first++ == 0' "$1" ;;
+
+  *) ;;
+esac
+
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"

extern/erlang_protobuffs/deps/meck/.git/hooks/update.sample

+#!/bin/sh
+#
+# An example hook script to blocks unannotated tags from entering.
+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
+#
+# To enable this hook, rename this file to "update".
+#
+# Config
+# ------
+# hooks.allowunannotated
+#   This boolean sets whether unannotated tags will be allowed into the
+#   repository.  By default they won't be.
+# hooks.allowdeletetag
+#   This boolean sets whether deleting tags will be allowed in the
+#   repository.  By default they won't be.
+# hooks.allowmodifytag
+#   This boolean sets whether a tag may be modified after creation. By default
+#   it won't be.
+# hooks.allowdeletebranch
+#   This boolean sets whether deleting branches will be allowed in the
+#   repository.  By default they won't be.
+# hooks.denycreatebranch
+#   This boolean sets whether remotely creating branches will be denied
+#   in the repository.  By default this is allowed.
+#
+
+# --- Command line
+refname="$1"
+oldrev="$2"
+newrev="$3"
+
+# --- Safety check
+if [ -z "$GIT_DIR" ]; then
+	echo "Don't run this script from the command line." >&2
+	echo " (if you want, you could supply GIT_DIR then run" >&2
+	echo "  $0 <ref> <oldrev> <newrev>)" >&2
+	exit 1
+fi
+
+if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+	echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
+	exit 1
+fi
+
+# --- Config
+allowunannotated=$(git config --bool hooks.allowunannotated)
+allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
+denycreatebranch=$(git config --bool hooks.denycreatebranch)
+allowdeletetag=$(git config --bool hooks.allowdeletetag)
+allowmodifytag=$(git config --bool hooks.allowmodifytag)
+
+# check for no description
+projectdesc=$(sed -e '1q' "$GIT_DIR/description")
+case "$projectdesc" in
+"Unnamed repository"* | "")
+	echo "*** Project description file hasn't been set" >&2
+	exit 1
+	;;
+esac
+
+# --- Check types
+# if $newrev is 0000...0000, it's a commit to delete a ref.
+zero="0000000000000000000000000000000000000000"
+if [ "$newrev" = "$zero" ]; then
+	newrev_type=delete
+else
+	newrev_type=$(git cat-file -t $newrev)
+fi
+
+case "$refname","$newrev_type" in
+	refs/tags/*,commit)
+		# un-annotated tag
+		short_refname=${refname##refs/tags/}
+		if [ "$allowunannotated" != "true" ]; then
+			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
+			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
+			exit 1
+		fi
+		;;
+	refs/tags/*,delete)
+		# delete tag
+		if [ "$allowdeletetag" != "true" ]; then
+			echo "*** Deleting a tag is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/tags/*,tag)
+		# annotated tag
+		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
+		then
+			echo "*** Tag '$refname' already exists." >&2
+			echo "*** Modifying a tag is not allowed in this repository." >&2
+			exit 1
+		fi
+		;;
+	refs/heads/*,commit)
+		# branch
+		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
+			echo "*** Creating a branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/heads/*,delete)
+		# delete branch
+		if [ "$allowdeletebranch" != "true" ]; then
+			echo "*** Deleting a branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/remotes/*,commit)
+		# tracking branch
+		;;
+	refs/remotes/*,delete)
+		# delete tracking branch
+		if [ "$allowdeletebranch" != "true" ]; then
+			echo "*** Deleting a tracking branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	*)
+		# Anything else (is there anything else?)
+		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
+		exit 1
+		;;
+esac
+
+# --- Finished
+exit 0

extern/erlang_protobuffs/deps/meck/.git/index

Binary file added.

extern/erlang_protobuffs/deps/meck/.git/info/exclude

+# git ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+# For a project mostly in C, the following would be a good set of
+# exclude patterns (uncomment them if you want to use them):
+# *.[oa]
+# *~

extern/erlang_protobuffs/deps/meck/.git/logs/HEAD

+0000000000000000000000000000000000000000 d6230ae6acabfebaebf18fb08281659d1794ce2c dehun <dehun@localhost.(none)> 1338552188 +0000	clone: from https://github.com/eproxus/meck.git
+d6230ae6acabfebaebf18fb08281659d1794ce2c d6230ae6acabfebaebf18fb08281659d1794ce2c dehun <dehun@localhost.(none)> 1338552188 +0000	checkout: moving from master to origin/master

extern/erlang_protobuffs/deps/meck/.git/logs/refs/heads/master

+0000000000000000000000000000000000000000 d6230ae6acabfebaebf18fb08281659d1794ce2c dehun <dehun@localhost.(none)> 1338552188 +0000	clone: from https://github.com/eproxus/meck.git

extern/erlang_protobuffs/deps/meck/.git/objects/pack/pack-52f71a69f6c3b3197ec93a5a86bc613c29a9b29e.idx

Binary file added.

extern/erlang_protobuffs/deps/meck/.git/objects/pack/pack-52f71a69f6c3b3197ec93a5a86bc613c29a9b29e.pack

Binary file added.

extern/erlang_protobuffs/deps/meck/.git/packed-refs

+# pack-refs with: peeled 
+37715e67bb8dca32efa1f2a6078649fd7edd3710 refs/tags/0.7.2
+^2447206f201bab1054c49cd32621eee23fa0ee3b
+a75708140824f45d8f7020bed7d5f272929eba99 refs/tags/0.7.1
+^916844d6d1df6b71341f4a90e563d827edc6a02a
+b03963a52bfc6d52c280d064d7fb74a60eab564d refs/tags/0.7
+^eacde0b2b853724cc345b15bff24e5627a1d6177
+5e1757e5fdd4b01352677b5fd4ee5c3ddfed516c refs/tags/0.6.3
+^a383a0ea932d942b5ee727fb8e699c99f2074c24
+d8ebd02d90212527eb25364d00658b47b3553078 refs/tags/0.6.2
+^9f9ea4a6cafad5ebd3b1e0128e5a3ff0de5340bd
+80226ea7b1668b1b64020069cf59c709cf058986 refs/tags/0.6.1
+^85a58b3203165eb28d078e84616a578c75fd6c2b
+7bf75e23235335e058377791e3eae34e871b48ea refs/tags/0.6
+^8d86012c851b7ee6eb26831f1822129ee82c8f2e
+59f1b2cdb956e4838606098e6d55bed70554b98a refs/tags/0.5.1
+^d07a2d36d38c60ca697629d59d67298d396fab6a
+85935dbd4dd5edb718853cc01d55264ce2e1f19a refs/tags/0.5
+^3bdbb81831543476c5840d754555b8a22dd5b5af
+99c6c5e29dafad44489dd1ca37511600c8df11c8 refs/remotes/origin/support/klaar/file-bif-passthrough
+d6230ae6acabfebaebf18fb08281659d1794ce2c refs/remotes/origin/master
+147d0421faebd60d55089e13ede0e031d80c29c0 refs/remotes/origin/gh-pages
+7fbebf54124bdbc32e1af29a680f395a267645eb refs/remotes/origin/feature/save-abstract-code
+b4594b2dd69b75831fb693f0db1a5647311c5079 refs/remotes/origin/feature/rebar-test-detection
+a8baff32bdefe3fc3ffc15324f52db5949a9b345 refs/remotes/origin/feature/put-get
+9d5681e5e9257ba4bf52e0a37d5fc7ee4861850d refs/remotes/origin/feature/bif_blacklist
+e71a0f6ef737556470b8bfaa84c7697e68bdd5b6 refs/remotes/origin/develop

extern/erlang_protobuffs/deps/meck/.git/refs/heads/master

+d6230ae6acabfebaebf18fb08281659d1794ce2c

extern/erlang_protobuffs/deps/meck/.git/refs/remotes/origin/HEAD

+ref: refs/remotes/origin/master

extern/erlang_protobuffs/deps/meck/.gitignore

+*.beam
+*.log
+*.dump
+*.coverdata
+doc/*.html
+doc/*.css
+doc/*.png
+doc/edoc-info
+ebin
+.eunit
+.DS_Store
+tags
+.*.swp
+.settings
+.project

extern/erlang_protobuffs/deps/meck/.scripts/tag_with_changelog.sh

+#!/bin/bash
+
+# Install for alias 'tag-cl' with:
+#   git config alias.tag-cl '!.scripts/tag_with_changelog.sh'
+
+set -e # Abort on first failure, so we don't mess something up
+
+if [ -z "$1" ]; then
+    # Missing tag name
+    echo "usage: git tag-cl <tag>" >&2
+    exit 129
+fi
+if [ ! -f CHANGELOG ]; then
+    # No changelog to be used
+    echo "fatal: CHANGELOG missing" >&2
+    exit 128
+fi
+if [ ! -z "$(git status --short)" ]; then
+    # Sanity check
+    echo "fatal: dirty repository" >&2
+    exit 128
+fi
+
+CHANGELOG=$(cat CHANGELOG)
+
+# Clean up changelog
+echo "" > CHANGELOG
+git add CHANGELOG
+
+# Update version in .app file
+sed -i "" -e "s/{vsn, .*}/{vsn, \"$1\"}/g" src/meck.app.src
+sed -i "" -e "s/@version .*/@version $1/g" doc/overview.edoc
+git add src/meck.app.src
+git add doc/overview.edoc
+
+# Commit, tag and push
+git commit -m "Version $1"
+git tag -s $1 -m "Version $
+
+$CHANGELOG"
+git push && git push --tags

extern/erlang_protobuffs/deps/meck/.travis.yml

+language: erlang
+notifications:
+  disabled: true
+otp_release:
+  - R15B
+  - R14B04
+  - R14B03
+  - R14B02

extern/erlang_protobuffs/deps/meck/CHANGELOG

+

extern/erlang_protobuffs/deps/meck/LICENSE

+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object