<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-1210620830882852571</id><updated>2009-11-06T01:33:13.900-08:00</updated><title type='text'>Codenotifier Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codenotifier.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default'/><link rel='alternate' type='text/html' href='http://codenotifier.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Artem Vasiliev</name><uri>http://www.blogger.com/profile/13881512929474647141</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1210620830882852571.post-6959631934046871141</id><published>2008-05-23T12:30:00.000-07:00</published><updated>2008-05-24T00:49:25.220-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='diff'/><title type='text'>Showing diffs</title><content type='html'>&lt;a href="http://www.flickr.com/photos/thirstydog/2518194342/" title="codenotifier diff"&gt;&lt;img src="http://farm3.static.flickr.com/2307/2518194342_c99a667932_m.jpg" width="240" height="185" alt="codenotifier diff" /&gt;&lt;/a&gt;&lt;br /&gt;Codenotifier is able now to show commit diffs. If commit looks interesting you can tell codenotifier to load and show the changeset by clicking 'Fetch diff'. Diff fetch is asynchronous so the same page without diff will likely be returned; diff should appear there in about 10 seconds (this really depends on server load and remote repository availability and timings). In most cases you'll get the diff after you click Refresh on the same page.&lt;br /&gt;&lt;br /&gt;Here's &lt;a href="http://codenotifier.com/projects/92/commits/62297" rel="nofollow"&gt;an axample&lt;/a&gt; of already fetched diff. Btw this is when I knew Python language name origin!&lt;br /&gt;&lt;br /&gt;See, there are permalinks to each diffed file and to each line of diff. I think ability to comment diff lines, like excellent &lt;a href="http://github.com/artemv/diff_to_html.rb/commit/b386d9f9ca11efda9e7735205411e95020cdceb9#lib/diff_to_html.rb-P5"&gt;GitHub&lt;/a&gt; feature, might be useful also..&lt;br /&gt;&lt;br /&gt;Just in case, I also extracted code converting unified diff to HTML to a Ruby &lt;a href="http://github.com/artemv/diff_to_html.rb/tree/master" rel="nofollow"&gt;gem&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Previously codenotifier gave link to Trac's changeset screen for commit of project with Trac, but not every project is on Trac, and not every Trac instance (beleive it or not!) is integrated with SVN.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210620830882852571-6959631934046871141?l=codenotifier.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codenotifier.blogspot.com/feeds/6959631934046871141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1210620830882852571&amp;postID=6959631934046871141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/6959631934046871141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/6959631934046871141'/><link rel='alternate' type='text/html' href='http://codenotifier.blogspot.com/2008/05/showing-diffs.html' title='Showing diffs'/><author><name>Artem Vasiliev</name><uri>http://www.blogger.com/profile/13881512929474647141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04951014410270237934'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210620830882852571.post-3471276991261915306</id><published>2008-05-10T12:30:00.000-07:00</published><updated>2008-05-23T13:31:15.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><title type='text'>Commits search</title><content type='html'>&lt;a href="http://www.flickr.com/photos/thirstydog/2491032416/sizes/o/" title="codenotifier search by thirstydog, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2312/2491032416_8fe57ef2b0.jpg" width="500" height="221" alt="codenotifier search" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codenotifier.com/"&gt;Codenotifier &lt;/a&gt;now has seach function. It searches over projects and commits, so if you enter &lt;a href="http://codenotifier.com/search?query=rails&amp;amp;commit=Search"&gt;'rails' &lt;/a&gt;you'll get 'rails' project, 'railstree' (because simple queries are automaticaly suffixed with *), and all the commits in different projects that have 'rails' in (start of) their commit message, user name or project name. Some more examples:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can see how given technology is spread or just mentioned over projects, e.g. &lt;a href="http://codenotifier.com/search?query=flickr&amp;amp;commit=Search"&gt;flickr&lt;/a&gt;, &lt;a href="http://codenotifier.com/search?query=twitter&amp;amp;commit=Search"&gt;twitter&lt;/a&gt;, &lt;a href="http://codenotifier.com/search?query=facebook&amp;amp;commit=Search"&gt;facebook&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;In opensource projects people are often rather creative in commit messages, so you can test it with queries like &lt;a href="http://codenotifier.com/search?query=%22moon%22&amp;amp;commit=Search"&gt;"moon"&lt;/a&gt; or &lt;a href="http://codenotifier.com/search?query=%22yeah%22&amp;amp;commit=Search"&gt;"yeah"&lt;/a&gt;&lt;/li&gt;&lt;li&gt;You can limit your search results to specific project, e.g. &lt;a href="http://codenotifier.com/search?query=hadoop+grid*&amp;amp;commit=Search"&gt;"hadoop grid*"&lt;/a&gt; Here we see that project name is also searched in commits search.&lt;/li&gt;&lt;li&gt;When someone's patch is included in opensourc project it's usually commited by someone else, but author is often mentioned in commit message. For such cases we can see his traces in different projects by query like this: &lt;a href="http://codenotifier.com/search?query=vestb%C3%B8+&amp;amp;commit=Search"&gt;vestbø&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Individual fields can be queried too, e.g. we can have a list of sri's commits: &lt;a href="http://codenotifier.com/search?query=author%3A%22sri%22&amp;amp;commit=Search"&gt;author:"sri"&lt;/a&gt;. Available fields are &lt;span style="font-weight: bold;"&gt;author, project_name&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;description&lt;/span&gt;. No field specification means everywhere. And everything can be combined: &lt;a href="http://codenotifier.com/search?query=%28google+%21project_name%3Aa*%29+OR+author%3Adant*&amp;amp;commit=Search"&gt;(google !project_name:a*) OR author:dant*&lt;/a&gt;.&lt;a href="http://codenotifier.com/search?query=author%3A%22sri%22&amp;amp;commit=Search"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Plain old search for some specific problem, like &lt;a href="http://codenotifier.com/search?query=cache+store_headers&amp;amp;commit=Search"&gt;cache store_headers&lt;/a&gt;. Or you can limit it to single project: &lt;a href="http://codenotifier.com/search?query=cache+store_headers+%22httpd%22&amp;amp;commit=Search"&gt;cache store_headers "httpd"&lt;/a&gt;. Or to several projects: &lt;a href="http://codenotifier.com/search?query=cache+%28mediawiki+OR+webkit%29&amp;amp;commit=Search"&gt;cache (mediawiki OR webkit)&lt;/a&gt;. Or exclude some project: &lt;a href="http://codenotifier.com/search?query=scal*+-scala&amp;amp;commit=Search"&gt;scal* -scala&lt;/a&gt;&lt;a href="http://codenotifier.com/search?query=cache+store_headers&amp;amp;commit=Search"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;In commits search project name, author and message all are searched over. And Lucene/Google search syntax works, like 'x AND y', 'x OR y', 'x y' (same as 'x AND y'), "x y" (double qoutes makes query be interpreted as complete phrase), 'x y -z', '(x OR y) -z' and so on. &lt;br /&gt;&lt;br /&gt;For more detailed query help please see Lucene query &lt;a href="http://lucene.apache.org/java/docs/queryparsersyntax.html"&gt;help page&lt;/a&gt;. It mostly applies but have some differences, e.g. in codenotifier words are joined with AND by default; '!' works as NOT; may be something else, please comment if you find something.&lt;br /&gt;&lt;br /&gt;Results are given in (reverse) chronological order.&lt;br /&gt;&lt;br /&gt;Asterisk can be used in any place as a mask but can make search sometimes slow. It's added automatically to the end of query when Codenotifier thinks it's simple; and it leaves it as is if it looks advanced, i.e. contains asterisk, doublequote, AND or OR.&lt;br /&gt;&lt;br /&gt;The search is powered by excellent &lt;a href="http://ferret.davebalmain.com/"&gt;Ferret&lt;/a&gt; and &lt;a href="http://projects.jkraemer.net/acts_as_ferret/"&gt;acts_as_ferret&lt;/a&gt; libraries, big thanks to their authors!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210620830882852571-3471276991261915306?l=codenotifier.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codenotifier.blogspot.com/feeds/3471276991261915306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1210620830882852571&amp;postID=3471276991261915306' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/3471276991261915306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/3471276991261915306'/><link rel='alternate' type='text/html' href='http://codenotifier.blogspot.com/2008/05/commits-search.html' title='Commits search'/><author><name>Artem Vasiliev</name><uri>http://www.blogger.com/profile/13881512929474647141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04951014410270237934'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210620830882852571.post-3466691274623822355</id><published>2008-03-11T13:37:00.000-07:00</published><updated>2008-05-23T13:32:23.661-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Links in commit messages</title><content type='html'>It's quite common to have a link to defect/request ticket in SVN commit message, e.g. like in &lt;a href="http://lucene.apache.org/"&gt;Lucene&lt;/a&gt; project: &lt;a href="http://www.codenotifier.com/projects/29"&gt;http://www.codenotifier.com/projects/29.&lt;/a&gt;&lt;br /&gt;Codenotifier now shows such ticket references as links. For this there is a 'bugtracking' section at New/Edit Project screens. In that screen you can specify project bugtracking type, url and ticket reference patterns as they are used in commit messages.&lt;br /&gt;&lt;br /&gt;What's more, Trac bugtracking system is able to show pretty-formatted source difference for given commit. So, for Trac projects Codenotifier now shows 'diff' link for any commit. Example: &lt;a href="http://www.codenotifier.com/projects/19"&gt;Rails commits&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What I didn't see before, a lot of projects commit messages refer to another commits numbers, like in this &lt;a href="http://piston.rubyforge.org/"&gt;Piston&lt;/a&gt; &lt;a href="http://www.codenotifier.com/projects/172/commits/138"&gt;commit.&lt;/a&gt; They are now resolved too.&lt;br /&gt;&lt;br /&gt;File items in commit changesets now have link 'try', this is a link to the file in source repository. It's called 'try' because files presence is quite volatile in source repositories: given file might have been moved or deleted long ago. Also this link will open HEAD version of that file, not the revision of commit in which it's shown.&lt;br /&gt;&lt;br /&gt;What else.. while integrating with Trac changesets I appreciated the fact that it has natural IDs in URLs: it has commit revisions rather than PK of commit in Trac's database. Trac is said to not have a database of commits but that's another story :)&lt;br /&gt;So I decided to make primary URLs for commit pages also use natural IDs. Example, revision 632879 of Lucene.&lt;br /&gt;was: &lt;a href="http://www.codenotifier.com/commits/473109"&gt;http://www.codenotifier.com/commits/473109&lt;/a&gt;&lt;br /&gt;now: &lt;a href="http://www.codenotifier.com/projects/29/commits/632879"&gt;http://www.codenotifier.com/projects/29/commits/632879&lt;/a&gt;&lt;br /&gt;It now has codenotifier's internal ID of Lucene in URL but that's seem to be not a problem.&lt;br /&gt;&lt;br /&gt;Next thing I gonna add is Git support as most non-SVN projects I wanted to add are on Git; and there's also a trend to move existing repositories from SVN to Git. Looked to it briefly; surprised that there's no way to get project changelog without checking the source out (unlike Subversion). Wonder if my hosting HDD limit (10G) will work with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210620830882852571-3466691274623822355?l=codenotifier.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codenotifier.blogspot.com/feeds/3466691274623822355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1210620830882852571&amp;postID=3466691274623822355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/3466691274623822355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/3466691274623822355'/><link rel='alternate' type='text/html' href='http://codenotifier.blogspot.com/2008/03/news-links-in-commit-messages.html' title='Links in commit messages'/><author><name>Artem Vasiliev</name><uri>http://www.blogger.com/profile/13881512929474647141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04951014410270237934'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210620830882852571.post-2011971282498653066</id><published>2008-02-17T12:13:00.000-08:00</published><updated>2008-02-17T12:14:29.954-08:00</updated><title type='text'>Entry for feedback</title><content type='html'>Feel free to leave your comments on &lt;a href="http://codenotifier.com"&gt;Codenotifier&lt;/a&gt; here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210620830882852571-2011971282498653066?l=codenotifier.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codenotifier.blogspot.com/feeds/2011971282498653066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1210620830882852571&amp;postID=2011971282498653066' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/2011971282498653066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/2011971282498653066'/><link rel='alternate' type='text/html' href='http://codenotifier.blogspot.com/2008/02/entry-for-feedback.html' title='Entry for feedback'/><author><name>Artem Vasiliev</name><uri>http://www.blogger.com/profile/13881512929474647141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04951014410270237934'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1210620830882852571.post-8317530092460809543</id><published>2008-02-17T12:00:00.000-08:00</published><updated>2008-02-17T12:12:19.669-08:00</updated><title type='text'>Hello Codenotifier</title><content type='html'>I'd like to announce a new tool I just created: &lt;a href="http://codenotifier.com/"&gt;Codenotifier&lt;/a&gt;. It's a tool that provides RSS feeds for code changes in open source projects of your interest. I created it to satisfy my own need in such site; hope you'll like it too.&lt;br /&gt;Currently only Subversion repositories are supported; Git and others are planned. There's a lot of field for statistics and charts there; I hope to add them too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1210620830882852571-8317530092460809543?l=codenotifier.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codenotifier.blogspot.com/feeds/8317530092460809543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1210620830882852571&amp;postID=8317530092460809543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/8317530092460809543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1210620830882852571/posts/default/8317530092460809543'/><link rel='alternate' type='text/html' href='http://codenotifier.blogspot.com/2008/02/hello-codenotifier.html' title='Hello Codenotifier'/><author><name>Artem Vasiliev</name><uri>http://www.blogger.com/profile/13881512929474647141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04951014410270237934'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>