git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Garzik <jgarzik@pobox.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: Updated git HOWTO for kernel hackers
Date: Thu, 23 Jun 2005 03:15:03 -0400	[thread overview]
Message-ID: <42BA6177.8060202@pobox.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0506221915280.11175@ppc970.osdl.org>

[-- Attachment #1: Type: text/plain, Size: 1427 bytes --]

Linus Torvalds wrote:
> How about this patch? Then you can say
> 
> 	git-apply --stat --summary --apply --index /tmp/my.patch
> 
> and it will not only apply the patch, but also give a diffstat and a
> summary or renames etc..

Quite nice.



>>I usually want just two things:
>>
>>1) browse the log
>>
>>2) list changes in local tree that are not in $remote_tree, a la
>>	bk changes -L ../linux-2.6
>>
>>I agree that seeing the merge csets is useful, that is why [being 
>>ignorant of 'git log'] I used git-changes-script.
> 
> 
> For (1) "bk log" is good.

Chuckle.  What does one call a Freudian slip, in computer-land?


> For (2) you'll have to use your own script, or
> just have the remote tree as a branch in the same tree, in which case you
> can do
> 
> 	git log remotebranch..mybranch

Very neat.  That makes some things a bit easier, since I usually carry a 
'vanilla' branch as .git/refs/heads/master, and do all my modifications 
on other branches.

FWIW, git-changes-script (attached) facilitates #2 for me right now.  I 
use it just like BK's '-L' feature:

	cd netdev-2.6
	git checkout -f ieee80211
	git-changes-script -L ../linux-2.6 | less

That will produce the same output as the feature you just taught me,

	git log master..ieee80211

WARNING:  You have previously called git-changes-script quite ugly (not 
surprising), and this 'git log x..y' will probably replace it in my 
usage, long term.

	Jeff



[-- Attachment #2: git-changes-script --]
[-- Type: text/plain, Size: 2373 bytes --]

#!/bin/bash
#
# Make a log of changes in a GIT branch.
#
# This script was originally written by (c) Ross Vandegrift.
# Adapted to his scripts set by (c) Petr Baudis, 2005.
# Major optimizations by (c) Phillip Lougher.
# Rendered trivial by Linus Torvalds.
# Added -L|-R option by James Bottomley
#
# options:
# script [-L <dir> | -R <dir> |-r <from_sha1> [ -r <to_sha1] ] [<sha1>]
#
# With no options shows all the revisions from HEAD to the root
# -L shows all the changes in the local tree compared to the tree at <dir>
# -R shows all the changes in the remote tree at <dir> compared to the local
# -r shows all the changes in one commit or between two

tmpfile=/tmp/git_changes.$$
r1=
r2=

showcommit() {
	commit="$1"
	echo commit ${commit%:*};
	git-cat-file commit $commit | \
		while read key rest; do
			case "$key" in
			"author"|"committer")
				date=(${rest#*> })
				sec=${date[0]}; tz=${date[1]}
				dtz=${tz/+/+ }; dtz=${dtz/-/- }
				pdate="$(date -Rud "1970-01-01 UTC + $sec sec $dtz" 2>/dev/null)"
				if [ "$pdate" ]; then
					echo $key $rest | sed "s/>.*/> ${pdate/+0000/$tz}/"
				else
					echo $key $rest
				fi
				;;
			"")
				echo; cat
				;;
			*)
				echo $key $rest
				;;
			esac

		done
}

while true; do
	case "$1" in
		-R)	shift;
			diffsearch=+
			remote="$1"
			shift;;
		-L)	shift;
			diffsearch=-
			remote="$1"
			shift;;
		-r)	shift;
			if [ -z "$r1" ]; then
				r1="$1"
			else
				r2="$1"
			fi
			shift;;
		*)	base="$1"
			break;;
	esac
done

if [ -n "$r1" ]; then
	if [ -z "$r2" ]; then
		showcommit $r1
		exit 0
	fi
	diffsearch=+
	remote=`pwd`;
	tobase="$r2";
	base="$r1"
fi
	
if [ -z "$base" ]; then
	base=$(cat .git/HEAD) || exit 1
fi

git-rev-tree $base | sort -rn  > ${tmpfile}.base
if [ -n "$remote" ]; then
	[ -d $remote/.git ] || exit 1
	if [ -z "$tobase" ]; then
		tobase=$(cat $remote/.git/HEAD) || exit 1
	fi
	pushd $remote > /dev/null
	git-rev-tree $tobase | sort -rn > ${tmpfile}.remote
	diff -u ${tmpfile}.base ${tmpfile}.remote | grep "^${diffsearch}[^${diffsearch}]" | cut -c 1- > ${tmpfile}.diff
	rm -f ${tmpfile}.base ${tmpfile}.remote
	mv ${tmpfile}.diff ${tmpfile}.base
	if [ $diffsearch = "-" ]; then
		popd > /dev/null
	fi
fi

[ -s "${tmpfile}.base" ] || exit 0

cat ${tmpfile}.base | while read time commit parents; do
	showcommit $commit
	echo -e "\n--------------------------"

done
rm -f ${tmpfile}.base

  parent reply	other threads:[~2005-06-23  7:16 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-22 22:24 Updated git HOWTO for kernel hackers Jeff Garzik
2005-06-22 22:40 ` Dave Jones
2005-06-22 22:47   ` Jeff Garzik
2005-06-22 22:52     ` Dave Jones
2005-06-23  0:14       ` Jeff Garzik
2005-06-25  3:33   ` Jeff Garzik
2005-06-25 17:29     ` Dave Jones
2005-06-22 23:09 ` Greg KH
2005-06-22 23:25   ` Linus Torvalds
2005-06-23  0:05     ` Jeff Garzik
2005-06-23  0:29       ` Linus Torvalds
2005-06-23  1:47         ` Jeff Garzik
2005-06-23  1:56           ` Linus Torvalds
2005-06-23  2:16             ` Jeff Garzik
2005-06-23  2:39               ` Linus Torvalds
2005-06-23  3:06                 ` Jeff Garzik
2005-06-23  3:24                   ` Linus Torvalds
2005-06-23  5:16                     ` Jeff Garzik
2005-06-23  5:58                       ` Linus Torvalds
2005-06-23  6:20                         ` Greg KH
2005-06-23  6:51                           ` Linus Torvalds
2005-06-23  7:11                             ` Greg KH
2005-06-23  7:03                         ` Jeff Garzik
2005-06-23  7:38                         ` Petr Baudis
2005-06-23  8:18                           ` Martin Langhoff
2005-06-23  8:30                         ` Vojtech Pavlik
2005-06-23 14:31                       ` Horst von Brand
2005-06-22 23:16 ` Linus Torvalds
2005-06-23  0:15   ` Jeff Garzik
2005-06-23  1:53     ` Linus Torvalds
2005-06-23  7:06       ` Jeff Garzik
2005-06-23 15:29         ` Linus Torvalds
2005-06-23  0:33   ` Linus Torvalds
2005-06-23  2:04   ` Jeff Garzik
2005-06-23  2:28     ` Linus Torvalds
2005-06-23  3:52       ` Adam Kropelin
2005-06-23  4:54         ` Linus Torvalds
2005-06-23  5:35           ` Jeff Garzik
2005-06-23  6:37             ` Linus Torvalds
2005-06-23  6:07           ` Miles Bader
2005-06-23  7:15       ` Jeff Garzik [this message]
2005-06-23 16:06         ` Linus Torvalds
2005-06-23  8:01   ` Anton Altaparmakov
2005-06-23  4:23 ` Daniel Barkalow
2005-06-23 12:25 ` Dave Airlie
2005-06-23 23:56 ` Mercurial vs " Matt Mackall
2005-06-24  6:41   ` Petr Baudis
2005-06-24 12:38     ` Christopher Li
2005-06-28 15:00       ` Petr Baudis
2005-06-28 15:10         ` Andrew Thompson
2005-06-28 15:35           ` Petr Baudis
2005-06-28 21:54           ` Horst von Brand
2005-06-28 18:47             ` Christopher Li
2005-06-29  0:12             ` Kyle Moffett
2005-06-28 18:01         ` Matt Mackall
2005-06-28 20:27           ` Kyle Moffett
2005-06-28 20:45             ` Sean
2005-06-28 22:14               ` Matt Mackall
2005-06-28 22:23                 ` Sean
2005-06-28 22:47                   ` Kyle Moffett
2005-06-28 22:49                   ` Matt Mackall
2005-06-28 22:59                     ` Sean
2005-06-28 23:25                       ` Kyle Moffett
2005-06-28 23:37                         ` Sean
2005-06-29  0:08                           ` Kyle Moffett
2005-06-29  0:25                             ` Sean
2005-06-29  3:53                               ` Kyle Moffett
2005-06-29 10:27                                 ` Vojtech Pavlik
2005-06-28 23:29                       ` Matt Mackall
2005-06-29  6:32             ` Thomas Arendsen Hein
2005-06-24 13:06     ` Andrea Arcangeli
2005-06-24 13:39       ` Theodore Ts'o
2005-06-24 13:46         ` Paolo Ciarrocchi
2005-06-24 12:19           ` Christopher Li
2005-06-24 13:57       ` Kevin Smith
2005-06-24 18:03         ` Matt Mackall
2005-06-28 15:07         ` Petr Baudis
2005-06-28 15:15           ` Sven Verdoolaege
2005-06-28 15:34             ` Petr Baudis
2005-06-28 16:50           ` Cygwin and Native MS Windows (was: Mercurial vs Updated git HOWTO for kernel hackers) Kevin Smith
2005-06-28 16:51           ` Cogito vs. Git " Kevin Smith
2005-06-28 20:54             ` Petr Baudis
2005-06-24 13:16     ` Mercurial vs Updated git HOWTO for kernel hackers Matthias Urlichs
2005-06-24 19:00       ` Linus Torvalds
2005-06-24 19:25         ` John W. Linville
2005-06-24 22:38         ` Jeff Garzik
2005-06-24 21:11       ` Daniel Barkalow
2005-06-24 22:08       ` Should "git-read-tree -m -u" delete files? Junio C Hamano
2005-06-24 22:45     ` Mercurial vs Updated git HOWTO for kernel hackers Joel Becker
2005-06-24 23:08   ` Kyle Moffett
2005-06-27 18:31   ` Pavel Machek
2005-06-27 19:05     ` Kyle Moffett
2005-06-27 19:40     ` Matt Mackall
2005-06-27 19:51       ` Benjamin LaHaise
2005-06-27 20:51         ` Matt Mackall
2005-06-27 21:53         ` Ed Tomlinson
2005-07-08 15:18 ` Amin Azez
2005-07-11  8:56   ` Amin Azez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42BA6177.8060202@pobox.com \
    --to=jgarzik@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).