diff --git a/migrate/tests/versioning/test_repository.py b/migrate/tests/versioning/test_repository.py
index 2c489d5..9ef45c6 100644
--- a/migrate/tests/versioning/test_repository.py
+++ b/migrate/tests/versioning/test_repository.py
@@ -10,6 +10,7 @@ from migrate.versioning.script import *
 from nose.tools import raises
 
 from migrate.tests import fixture
+from datetime import datetime
 
 
 class TestRepository(fixture.Pathed):
@@ -96,6 +97,24 @@ class TestVersionedRepository(fixture.Pathed):
         self.assert_(repos.latest >= 2)
         self.assert_(repos.latest < 3)
 
+
+    def test_timestmap_numbering_version(self):
+        repos = Repository(self.path_repos)
+        repos.config.set('db_settings', 'use_timestamp_numbering', True)
+
+        # Get latest version, or detect if a specified version exists
+        self.assertEquals(repos.latest, 0)
+        # repos.latest isn't an integer, but a VerNum
+        # (so we can't just assume the following tests are correct)
+        self.assert_(repos.latest >= 0)
+        self.assert_(repos.latest < 1)
+
+        # Create a script and test again
+        now = int(datetime.utcnow().strftime('%Y%m%d%H%M%S'))
+        repos.create_script('')
+        print repos.latest
+        self.assertEquals(repos.latest, now)
+
     def test_source(self):
         """Get a script object by version number and view its source"""
         # Load repository and commit script
diff --git a/migrate/versioning/repository.py b/migrate/versioning/repository.py
index 71f3912..5032cfa 100644
--- a/migrate/versioning/repository.py
+++ b/migrate/versioning/repository.py
@@ -115,6 +115,7 @@ class Repository(pathed.Pathed):
         options.setdefault('version_table', 'migrate_version')
         options.setdefault('repository_id', name)
         options.setdefault('required_dbs', [])
+        options.setdefault('use_timestamp_numbering', '0')
 
         tmpl = open(os.path.join(tmpl_dir, cls._config)).read()
         ret = TempitaTemplate(tmpl).substitute(options)
@@ -152,10 +153,13 @@ class Repository(pathed.Pathed):
 
     def create_script(self, description, **k):
         """API to :meth:`migrate.versioning.version.Collection.create_new_python_version`"""
+        
+        k['use_timestamp_numbering'] = self.use_timestamp_numbering
         self.versions.create_new_python_version(description, **k)
 
     def create_script_sql(self, database, **k):
         """API to :meth:`migrate.versioning.version.Collection.create_new_sql_version`"""
+        k['use_timestamp_numbering'] = self.use_timestamp_numbering
         self.versions.create_new_sql_version(database, **k)
 
     @property
@@ -173,6 +177,13 @@ class Repository(pathed.Pathed):
         """Returns repository id specified in config"""
         return self.config.get('db_settings', 'repository_id')
 
+    @property
+    def use_timestamp_numbering(self):
+        """Returns use_timestamp_numbering specified in config"""
+        ts_numbering = self.config.get('db_settings', 'use_timestamp_numbering', raw=True)
+        
+        return ts_numbering
+
     def version(self, *p, **k):
         """API to :attr:`migrate.versioning.version.Collection.version`"""
         return self.versions.version(*p, **k)
diff --git a/migrate/versioning/templates/repository/default/migrate.cfg b/migrate/versioning/templates/repository/default/migrate.cfg
index 1dc6ff6..b3380b1 100644
--- a/migrate/versioning/templates/repository/default/migrate.cfg
+++ b/migrate/versioning/templates/repository/default/migrate.cfg
@@ -18,3 +18,8 @@ version_table={{ locals().pop('version_table') }}
 # be using to ensure your updates to that database work properly.
 # This must be a list; example: ['postgres','sqlite']
 required_dbs={{ locals().pop('required_dbs') }}
+
+# When creating new change scripts, Migrate will stamp the new script with
+# a version number. By default this is latest_version + 1. You can set this
+# to 'true' to tell Migrate to use the UTC timestamp instead.
+use_timestamp_numbering='false'
\ No newline at end of file
diff --git a/migrate/versioning/version.py b/migrate/versioning/version.py
index a09b8cd..fdb78a9 100644
--- a/migrate/versioning/version.py
+++ b/migrate/versioning/version.py
@@ -8,6 +8,7 @@ import logging
 
 from migrate import exceptions
 from migrate.versioning import pathed, script
+from datetime import datetime
 
 
 log = logging.getLogger(__name__)
@@ -88,9 +89,17 @@ class Collection(pathed.Pathed):
         """:returns: Latest version in Collection"""
         return max([VerNum(0)] + self.versions.keys())
 
+    def _next_ver_num(self, use_timestamp_numbering):
+        print use_timestamp_numbering
+        if use_timestamp_numbering == True:
+            print "Creating new timestamp version!"
+            return VerNum(int(datetime.utcnow().strftime('%Y%m%d%H%M%S')))
+        else:
+            return self.latest + 1
+
     def create_new_python_version(self, description, **k):
         """Create Python files for new version"""
-        ver = self.latest + 1
+        ver = self._next_ver_num(k.pop('use_timestamp_numbering', False))
         extra = str_to_filename(description)
 
         if extra:
@@ -107,7 +116,7 @@ class Collection(pathed.Pathed):
         
     def create_new_sql_version(self, database, **k):
         """Create SQL files for new version"""
-        ver = self.latest + 1
+        ver = self._next_ver_num(k.pop('use_timestamp_numbering', False))
         self.versions[ver] = Version(ver, self.path, [])
 
         # Create new files.