<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,8 @@
-=== 0.0.1 / 2008-07-22
+=== 0.1.0 / 2008-07-24
 
-* 1 major enhancement
+* Nearly usable! Sorta-works!
 
-  * Birthday!
+=== 0.0.1 / 2008-07-23
+
+* Birthday!
 </diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@ Manifest.txt
 README.rdoc
 Rakefile
 bin/conspire
+conspire.gemspec
 lib/conspire.rb
 lib/conspire/conspirator.rb
 lib/conspire/gitjour_exts.rb</diff>
      <filename>Manifest.txt</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,8 @@ options = Clip do |c|
              :default =&gt; Conspire::DEFAULTS[:name])
 end
 
+abort options.to_s if !options.valid?
+
 Conspire.start ARGV.first, options
 Thread.new { Conspire.discover_loop }
 Conspire.sync_loop</diff>
      <filename>bin/conspire</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,11 @@
-$LOAD_PATH &lt;&lt; File.dirname(__FILE__)
 require 'set'
 require 'fileutils'
 
 require 'rubygems'
 require 'gitjour' # TODO: can we get rid of the avahi compatibility warning?
 
-require 'conspire/gitjour_exts'
-require 'conspire/conspirator'
+require File.dirname(__FILE__) + '/conspire/gitjour_exts'
+require File.dirname(__FILE__) + '/conspire/conspirator'
 
 module Conspire
   VERSION = '0.1.0'
@@ -20,11 +19,10 @@ module Conspire
 
   # Begin a conspiracy session
   def start(path, options)
-    @options = options
-    @path = path
+    @path, @options = path, options
+
     Gitjour::Application.init @path
-    FileUtils.touch(@path + '/.conspire')
-    `cd #{@path}; git add .conspire; git commit -m &quot;initial&quot;`
+
     @thread = Thread.new do
       Gitjour::Application.serve(@path, @options.name, @options.port)
     end
@@ -42,6 +40,7 @@ module Conspire
     end
   end
 
+  # Sync with all conspirators, dropping the problematic ones
   def sync_all
     @conspirators.map do |c|
       begin
@@ -58,9 +57,6 @@ module Conspire
   end
 
   def discover_loop
-    loop do
-      Conspire.discover
-      puts Conspire.conspirators.map{ |c| c.to_s } if ENV['DEBUG']
-    end
+    loop { discover and (p @conspirators if ENV['DEBUG']) }
   end
 end</diff>
      <filename>lib/conspire.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,25 @@
 module Conspire
   class Conspirator
-    attr_accessor :last_synced, :host, :port, :name
+    attr_accessor :host, :port, :name
 
-    def initialize(host, port, name = DEFAULTS[:name])
-      @host, @port, @name = host[0 .. -2], port || DEFAULTS[:port], name
+    def initialize(host, port, name)
+      # host has a trailing dot; remove it
+      @host, @port, @name = host[0 .. -2], port, name
     end
 
     def sync(path)
-      # TODO: figure out conflictless rebasing... evan?
-      success = if ENV['DEBUG']
-                  puts &quot;cd #{path} &amp;&amp; git pull --rebase #{url}&quot;
-                  system &quot;cd #{path} &amp;&amp; git pull --rebase #{url}&quot;
-                else
-                  system &quot;cd #{path} &amp;&amp; git pull --rebase #{url} &amp;&gt; /dev/null&quot;
-                end
-
-      raise &quot;could not rebase from #{url}&quot; if ! success
-      # @last_synced = Time.now # is this useful?
+      # TODO: figure out conflictless rebasing; new content always wins. evan?
+      if ENV['DEBUG']
+        puts &quot;cd #{path} &amp;&amp; git pull --rebase #{url}&quot;
+        system &quot;cd #{path} &amp;&amp; git pull --rebase #{url}&quot;
+      else
+        system &quot;cd #{path} &amp;&amp; git pull --rebase #{url} &amp;&gt; /dev/null&quot;
+      end or raise &quot;could not rebase from #{url}&quot; if ! success
     end
 
     def url; &quot;git://#{@host}:#{@port}/&quot; end
-
     alias_method :to_s, :url
+    alias_method :inspect, :url
 
     # For set equality
     def eql?(other); self.url == other.url end</diff>
      <filename>lib/conspire/conspirator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,9 +5,12 @@ module Gitjour
 
       def init(path)
         abort &quot;Repository already exists: #{path}&quot; if File.exist? path + '/.git'
-        at_exit { FileUtils.rm_rf [path + '/.git', path + '/.conspire'] } unless ENV['KEEP']
+        
         `mkdir -p #{path} &amp;&amp; cd #{path} &amp;&amp; git init`
-        `touch #{path}/.git/git-daemon-export-ok`
+        FileUtils.touch [&quot;#{path}/.git/git-daemon-export-ok&quot;, &quot;#{path}/.conspire&quot;]
+        `cd #{path}; git add .conspire; git commit -m &quot;initial&quot;`
+
+        at_exit { FileUtils.rm_rf [path + '/.git', path + '/.conspire'] } unless ENV['KEEP']
       end
 
       def puts(*args); end unless ENV['DEBUG']</diff>
      <filename>lib/conspire/gitjour_exts.rb</filename>
    </modified>
    <modified>
      <diff>@@ -40,6 +40,7 @@
 ;;; TODO:
 
 ;; For some reason conspire-sync-buffer only runs on cursor movement
+;; Gracefully kill shell process so it can clean up
 ;; Don't bother with *Async Shell Command* output buffer
 ;; Color lines based on which conspirator wrote them?
 </diff>
      <filename>lib/conspire/support/conspire.el</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,7 @@ class TestConspire &lt; Test::Unit::TestCase
     @remote_thread = Thread.new do
       Gitjour::Application.serve(REMOTE_SPACE, 'conspiracy-remote-test', 7458)
     end
-    @remote = Conspire::Conspirator.new('localhost.', '7458')
+    @remote = Conspire::Conspirator.new('localhost.', '7458', 'conspiracy')
     Conspire.start(LOCAL_SPACE, OpenStruct.new(:port =&gt; 7457,
                                                :name =&gt; 'conspiracy',
                                                :sync_interval =&gt; 0.5))
@@ -61,8 +61,8 @@ class TestConspire &lt; Test::Unit::TestCase
   end
 
   def test_conspirator_set
-    Conspire.conspirators &lt;&lt; Conspire::Conspirator.new('dynabook.', '7458')
-    Conspire.conspirators &lt;&lt; Conspire::Conspirator.new('dynabook.', '7458')
+    Conspire.conspirators &lt;&lt; Conspire::Conspirator.new('dynabook.', '7458', 'conspiracy')
+    Conspire.conspirators &lt;&lt; Conspire::Conspirator.new('dynabook.', '7458', 'conspiracy')
     assert_equal 1, Conspire.conspirators.size
   end
 </diff>
      <filename>test/test_conspire.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>808b2a415e0f1213f10090ff0494e5382c8a41d1</id>
    </parent>
  </parents>
  <author>
    <name>Phil Hagelberg</name>
    <email>technomancy@gmail.com</email>
  </author>
  <url>http://github.com/technomancy/conspire/commit/0580318a6f499678d44561f4912131fc70aa4c82</url>
  <id>0580318a6f499678d44561f4912131fc70aa4c82</id>
  <committed-date>2008-07-25T17:39:27-07:00</committed-date>
  <authored-date>2008-07-25T17:39:27-07:00</authored-date>
  <message>wide-ranging minor refactorings</message>
  <tree>1bf597a846bc027080d2bf5894186266963944fd</tree>
  <committer>
    <name>Phil Hagelberg</name>
    <email>technomancy@gmail.com</email>
  </committer>
</commit>
