<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>activerecord/test/migrations/duplicate_names/20080507052938_chunky.rb</filename>
    </added>
    <added>
      <filename>activerecord/test/migrations/duplicate_names/20080507053028_chunky.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,7 @@
 *SVN*
 
+* Added protection against duplicate migration names (Aslak Helles&#248;y) [#112]
+
 * Base#instantiate_time_object: eliminate check for Time.zone, since we can assume this is set if time_zone_aware_attributes is set to true [Geoff Buesing]
 
 * Time zone aware attribute methods use Time.zone.parse instead of #to_time for String arguments, so that offset information in String is respected. Resolves #105. [Scott Fleckenstein, Geoff Buesing]</diff>
      <filename>activerecord/CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,12 @@ module ActiveRecord
     end
   end
 
+  class DuplicateMigrationNameError &lt; ActiveRecordError#:nodoc:
+    def initialize(name)
+      super(&quot;Multiple migrations have the name #{name}&quot;)
+    end
+  end
+
   class UnknownMigrationVersionError &lt; ActiveRecordError #:nodoc:
     def initialize(version)
       super(&quot;No migration with version number #{version}&quot;)
@@ -440,6 +446,10 @@ module ActiveRecord
           if klasses.detect { |m| m.version == version }
             raise DuplicateMigrationVersionError.new(version) 
           end
+
+          if klasses.detect { |m| m.name == name.camelize }
+            raise DuplicateMigrationNameError.new(name.camelize) 
+          end
           
           load(file)
           </diff>
      <filename>activerecord/lib/active_record/migration.rb</filename>
    </modified>
    <modified>
      <diff>@@ -984,6 +984,12 @@ if ActiveRecord::Base.connection.supports_migrations?
       end
     end
 
+    def test_migrator_with_duplicate_names
+      assert_raises(ActiveRecord::DuplicateMigrationNameError, &quot;Multiple migrations have the name Chunky&quot;) do
+        ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + &quot;/duplicate_names&quot;, nil)
+      end
+    end
+
     def test_migrator_with_missing_version_numbers
       assert_raise(ActiveRecord::UnknownMigrationVersionError) do
         ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + &quot;/missing&quot;, 500)</diff>
      <filename>activerecord/test/cases/migration_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4cc594bd708df1ec67b61833493198ab0009c627</id>
    </parent>
  </parents>
  <author>
    <name>Aslak Helles&#248;y</name>
    <email>aslak.hellesoy@gmail.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/10fdf44236ea9abfd327fc59d83670d4bcb3e0ca</url>
  <id>10fdf44236ea9abfd327fc59d83670d4bcb3e0ca</id>
  <committed-date>2008-05-11T11:37:29-07:00</committed-date>
  <authored-date>2008-05-06T22:59:34-07:00</authored-date>
  <message>Added protection against duplicate migration names (Aslak Helles&#248;y) [#112 state:resolved]</message>
  <tree>ca354edb2a0c16136304ba45a3f2b2462b68d0d7</tree>
  <committer>
    <name>David Heinemeier Hansson</name>
    <email>david@loudthinking.com</email>
  </committer>
</commit>
