CINXE.COM

LKML: Petr Baudis: Re: Re: Kernel SCM saga..

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>LKML: Petr Baudis: Re: Re: Kernel SCM saga..</title><link href="/css/message.css" rel="stylesheet" type="text/css" /><link href="/css/wrap.css" rel="alternate stylesheet" type="text/css" title="wrap" /><link href="/css/nowrap.css" rel="stylesheet" type="text/css" title="nowrap" /><link href="/favicon.ico" rel="shortcut icon" /><script src="/js/simple-calendar.js" type="text/javascript"></script><script src="/js/styleswitcher.js" type="text/javascript"></script><link rel="alternate" type="application/rss+xml" title="lkml.org : last 100 messages" href="/rss.php" /><link rel="alternate" type="application/rss+xml" title="lkml.org : last messages by Petr Baudis" href="/groupie.php?aid=3517" /><!--Matomo--><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(["setDoNotTrack", true]); _paq.push(["disableCookies"]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//m.lkml.org/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '1']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!--End Matomo Code--></head><body onload="es.jasper.simpleCalendar.init();" itemscope="itemscope" itemtype="http://schema.org/BlogPosting"><table border="0" cellpadding="0" cellspacing="0"><tr><td width="180" align="center"><a href="/"><img style="border:0;width:135px;height:32px" src="/images/toprowlk.gif" alt="lkml.org" /></a></td><td width="32">聽</td><td class="nb"><div><a class="nb" href="/lkml"> [lkml]</a> 聽 <a class="nb" href="/lkml/2005"> [2005]</a> 聽 <a class="nb" href="/lkml/2005/4"> [Apr]</a> 聽 <a class="nb" href="/lkml/2005/4/8"> [8]</a> 聽 <a class="nb" href="/lkml/last100"> [last100]</a> 聽 <a href="/rss.php"><img src="/images/rss-or.gif" border="0" alt="RSS Feed" /></a></div><div>Views: <a href="#" class="nowrap" onclick="setActiveStyleSheet('wrap');return false;">[wrap]</a><a href="#" class="wrap" onclick="setActiveStyleSheet('nowrap');return false;">[no wrap]</a> 聽 <a class="nb" href="/lkml/mheaders/2005/4/8/341" onclick="this.href='/lkml/headers'+'/2005/4/8/341';">[headers]</a>聽 <a href="/lkml/bounce/2005/4/8/341">[forward]</a>聽 </div></td><td width="32">聽</td></tr><tr><td valign="top"><div class="es-jasper-simpleCalendar" baseurl="/lkml/"></div><div class="threadlist">Messages in this thread</div><ul class="threadlist"><li class="root"><a href="/lkml/2005/4/6/121">First message in thread</a></li><li><a href="/lkml/2005/4/8/43"> ross&#64;lug ...</a><ul><li><a href="/lkml/2005/4/8/172">Linus Torvalds</a><ul><li class="origin"><a href="/lkml/2005/4/9/19">Petr Baudis</a><ul><li><a href="/lkml/2005/4/9/19">"Randy.Dunlap"</a><ul><li><a href="/lkml/2005/4/9/95">Petr Baudis</a></li></ul></li><li><a href="/lkml/2005/4/9/144">Phillip Lougher</a><ul><li><a href="/lkml/2005/4/9/147">Petr Baudis</a></li></ul></li></ul></li><li><a href="/lkml/2005/4/9/70">Paul Jackson</a><ul><li><a href="/lkml/2005/4/9/74">Linus Torvalds</a><ul><li><a href="/lkml/2005/4/9/80">Paul Jackson</a></li><li><a href="/lkml/2005/4/9/162">Paul Jackson</a></li><li><a href="/lkml/2005/4/10/12">David Lang</a></li></ul></li></ul></li></ul></li></ul></li></ul><div class="threadlist">Patch in this message</div><ul class="threadlist"><li><a href="/lkml/diff/2005/4/8/341/1">Get diff 1</a></li></ul></td><td width="32" rowspan="2" class="c" valign="top"><img src="/images/icornerl.gif" width="32" height="32" alt="/" /></td><td class="c" rowspan="2" valign="top" style="padding-top: 1em"><table><tr><td><table><tr><td class="lp">Date</td><td class="rp" itemprop="datePublished">Sat, 9 Apr 2005 04:53:57 +0200</td></tr><tr><td class="lp">From</td><td class="rp" itemprop="author">Petr Baudis &lt;&gt;</td></tr><tr><td class="lp">Subject</td><td class="rp" itemprop="name">Re: Re: Kernel SCM saga..</td></tr></table></td><td></td></tr></table><pre itemprop="articleBody"> Hello,<br /><br />Dear diary, on Fri, Apr 08, 2005 at 05:50:21PM CEST, I got a letter<br />where Linus Torvalds &lt;torvalds&#64;osdl.org&gt; told me that...<br />&gt; <br />&gt; <br />&gt; On Fri, 8 Apr 2005 ross&#64;jose.lug.udel.edu wrote:<br />&gt; &gt; <br />&gt; &gt; Here's a partial solution. It does depend on a modified version of<br />&gt; &gt; cat-file that behaves like cat. I found it easier to have cat-file<br />&gt; &gt; just dump the object indicated on stdout. Trivial patch for that is included.<br />&gt; <br />&gt; Your trivial patch is trivially incorrect, though. First off, some files<br />&gt; may be binary (and definitely are - the "tree" type object contains<br />&gt; pathnames, and in order to avoid having to worry about special characters<br />&gt; they are NUL-terminated), and your modified "cat-file" breaks that. <br />&gt; <br />&gt; Secondly, it doesn't check or print the tag.<br /><br /> FWIW, I made few small fixes (to prevent some trivial usage errors to<br />cause cache corruption) and added scripts gitcommit.sh, gitadd.sh and<br />gitlog.sh - heavily inspired by what already went through the mailing<br />list. Everything is available at <a href="http://pasky.or.cz/~pasky/dev/git/">http://pasky.or.cz/~pasky/dev/git/</a><br />(including .dircache, even though it isn't shown in the index), the<br />cumulative patch can be found below. The scripts aim to provide some<br />(obviously very interim) more high-level interface for git.<br /><br /> I'm now working on tree-diff.c which will (surprise!) produce a diff<br />of two trees (I'll finish it after I get some sleep, though), and then I<br />will probably do some dwimmy gitdiff.sh wrapper for tree-diff and<br />show-diff. At that point I might get my hand on some pull more kind to<br />local changes.<br /><br /> Kind regards,<br /> Petr Baudis<br /><br />diff -ruN git-0.03/gitadd.sh git-devel-clean/gitadd.sh<br />--- git-0.03/gitadd.sh 1970-01-01 01:00:00.000000000 +0100<br />+++ git-devel-clean/gitadd.sh 2005-04-09 03:17:34.220577000 +0200<br />&#64;&#64; -0,0 +1,13 &#64;&#64;<br />+#!/bin/sh<br />+#<br />+# Add new file to a GIT repository.<br />+# Copyright (c) Petr Baudis, 2005<br />+#<br />+# Takes a list of file names at the command line, and schedules them<br />+# for addition to the GIT repository at the next commit.<br />+#<br />+# FIXME: Those files are omitted from show-diff output!<br />+<br />+for file in "$&#64;"; do<br />+ echo $file &gt;&gt;.dircache/add-queue<br />+done<br />diff -ruN git-0.03/gitcommit.sh git-devel-clean/gitcommit.sh<br />--- git-0.03/gitcommit.sh 1970-01-01 01:00:00.000000000 +0100<br />+++ git-devel-clean/gitcommit.sh 2005-04-09 03:17:34.220577000 +0200<br />&#64;&#64; -0,0 +1,36 &#64;&#64;<br />+#!/bin/sh<br />+#<br />+# Commit into a GIT repository.<br />+# Copyright (c) Petr Baudis, 2005<br />+# Based on an example script fragment sent to LKML by Linus Torvalds.<br />+#<br />+# Ignores any parameters for now, excepts changelog entry on stdin.<br />+#<br />+# FIXME: Gets it wrong for filenames containing spaces.<br />+<br />+<br />+if [ -r .dircache/add-queue ]; then<br />+ mv .dircache/add-queue .dircache/add-queue-progress<br />+ addedfiles=$(cat .dircache/add-queue-progress)<br />+else<br />+ addedfiles=<br />+fi<br />+changedfiles=$(show-diff -s | grep -v ': ok$' | cut -d : -f 1)<br />+commitfiles="$addedfiles $changedfiles"<br />+if [ ! "$commitfiles" ]; then<br />+ echo 'Nothing to commit.' &gt;&amp;2<br />+ exit<br />+fi<br />+update-cache $commitfiles<br />+rm -f .dircache/add-queue-progress<br />+<br />+<br />+oldhead=$(cat .dircache/HEAD)<br />+treeid=$(write-tree)<br />+newhead=$(commit-tree $treeid -p $oldhead)<br />+<br />+if [ "$newhead" ]; then<br />+ echo $newhead &gt;.dircache/HEAD<br />+else<br />+ echo "Error during commit (oldhead $oldhead, treeid $treeid)" &gt;&amp;2<br />+fi<br />diff -ruN git-0.03/gitlog.sh git-devel-clean/gitlog.sh<br />--- git-0.03/gitlog.sh 1970-01-01 01:00:00.000000000 +0100<br />+++ git-devel-clean/gitlog.sh 2005-04-09 04:28:51.227791000 +0200<br />&#64;&#64; -0,0 +1,61 &#64;&#64;<br />+#!/bin/sh<br />+####<br />+#### Call this script with an object and it will produce the change<br />+#### information for all the parents of that object<br />+####<br />+#### This script was originally written by Ross Vandegrift.<br />+# multiple parents test 1d0f4aec21e5b66c441213643426c770dc6dedc0<br />+# parents: ffa098b2e187b71b86a76d3cd5eb77d074a2503c<br />+# 6860e0d9197c7f52155466c225baf39b42d62f63<br />+<br />+# regex for parent declarations<br />+PARENTS="^parent [A-z0-9]{40}$"<br />+<br />+TMPCL="/tmp/gitlog.$$"<br />+<br />+# takes an object and generates the object's parent(s)<br />+function unpack_parents () {<br />+ echo "me $1"<br />+ echo "me $1" &gt;&gt;$TMPCL<br />+ RENTS=""<br />+<br />+ TMPCM=$(mktemp)<br />+ cat-file commit $1 &gt;$TMPCM<br />+ while read line; do<br />+ if echo "$line" | egrep -q "$PARENTS"; then<br />+ RENTS="$RENTS "$(echo $line | sed 's/parent //g')<br />+ fi<br />+ echo $line<br />+ done &lt;$TMPCM<br />+ rm $TMPCM<br />+<br />+ echo -e "\n--------------------------\n"<br />+<br />+ # if the last object had no parents, return<br />+ if [ ! "$RENTS" ]; then<br />+ return;<br />+ fi<br />+<br />+ #useful for testing<br />+ #echo $RENTS<br />+ #read<br />+ for i in `echo $RENTS`; do<br />+ # break cycles<br />+ if grep -q "me $i" $TMPCL; then<br />+ echo "Already visited $i" &gt;&amp;2<br />+ continue<br />+ else<br />+ unpack_parents $i<br />+ fi<br />+ done<br />+}<br />+<br />+base=$1<br />+if [ ! "$base" ]; then<br />+ base=$(cat .dircache/HEAD)<br />+fi<br />+<br />+rm -f $TMPCL<br />+unpack_parents $base<br />+rm -f $TMPCL<br />+<br />diff -ruN git-0.03/read-cache.c git-devel-clean/read-cache.c<br />--- git-0.03/read-cache.c 2005-04-08 22:51:35.000000000 +0200<br />+++ git-devel-clean/read-cache.c 2005-04-09 03:53:44.049642000 +0200<br />&#64;&#64; -264,11 +264,12 &#64;&#64;<br /> size = 0; // avoid gcc warning<br /> map = (void *)-1;<br /> if (!fstat(fd, &amp;st)) {<br />- map = NULL;<br /> size = st.st_size;<br /> errno = EINVAL;<br /> if (size &gt; sizeof(struct cache_header))<br /> map = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);<br />+ else<br />+ return (!hdr-&gt;entries) ? 0 : error("inconsistent cache");<br /> }<br /> close(fd);<br /> if (-1 == (int)(long)map)<br />diff -ruN git-0.03/show-diff.c git-devel-clean/show-diff.c<br />--- git-0.03/show-diff.c 2005-04-08 17:55:09.000000000 +0200<br />+++ git-devel-clean/show-diff.c 2005-04-09 03:53:44.063638000 +0200<br />&#64;&#64; -49,9 +49,17 &#64;&#64;<br /> <br /> int main(int argc, char **argv)<br /> {<br />+ int silent = 0;<br /> int entries = read_cache();<br /> int i;<br /> <br />+ while (argc-- &gt; 1) {<br />+ if (!strcmp(argv[1], "-s"))<br />+ silent = 1;<br />+ else if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))<br />+ usage("show-diff [-s]");<br />+ }<br />+<br /> if (entries &lt; 0) {<br /> perror("read_cache");<br /> exit(1);<br />&#64;&#64; -77,6 +85,9 &#64;&#64;<br /> for (n = 0; n &lt; 20; n++)<br /> printf("%02x", ce-&gt;sha1[n]);<br /> printf("\n");<br />+ if (silent)<br />+ continue;<br />+<br /> new = read_sha1_file(ce-&gt;sha1, type, &amp;size);<br /> show_differences(ce, &amp;st, new, size);<br /> free(new);<br />diff -ruN git-0.03/update-cache.c git-devel-clean/update-cache.c<br />--- git-0.03/update-cache.c 2005-04-08 17:53:44.000000000 +0200<br />+++ git-devel-clean/update-cache.c 2005-04-09 03:53:44.069637000 +0200<br />&#64;&#64; -231,6 +231,9 &#64;&#64;<br /> return -1;<br /> }<br /> <br />+ if (argc &lt; 2)<br />+ usage("update-cache &lt;file&gt;*");<br />+<br /> newfd = open(".dircache/index.lock", O_RDWR | O_CREAT | O_EXCL, 0600);<br /> if (newfd &lt; 0) {<br /> perror("unable to create new cachefile");<br />-<br />To unsubscribe from this list: send the line "unsubscribe linux-kernel" in<br />the body of a message to majordomo&#64;vger.kernel.org<br />More majordomo info at <a href="http://vger.kernel.org/majordomo-info.html">http://vger.kernel.org/majordomo-info.html</a><br />Please read the FAQ at <a href="http://www.tux.org/lkml/">http://www.tux.org/lkml/</a><br /></pre></td><td width="32" rowspan="2" class="c" valign="top"><img src="/images/icornerr.gif" width="32" height="32" alt="\" /></td></tr><tr><td align="right" valign="bottom"> 聽 </td></tr><tr><td align="right" valign="bottom">聽</td><td class="c" valign="bottom" style="padding-bottom: 0px"><img src="/images/bcornerl.gif" width="32" height="32" alt="\" /></td><td class="c">聽</td><td class="c" valign="bottom" style="padding-bottom: 0px"><img src="/images/bcornerr.gif" width="32" height="32" alt="/" /></td></tr><tr><td align="right" valign="top" colspan="2"> 聽 </td><td class="lm">Last update: 2005-04-09 04:58 聽聽 [from the cache]<br />漏2003-2020 <a href="http://blog.jasper.es/"><span itemprop="editor">Jasper Spaans</span></a>|hosted at <a href="https://www.digitalocean.com/?refcode=9a8e99d24cf9">Digital Ocean</a> and my Meterkast|<a href="http://blog.jasper.es/categories.html#lkml-ref">Read the blog</a></td><td>聽</td></tr></table><script language="javascript" src="/js/styleswitcher.js" type="text/javascript"></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10