diff --git a/fetch.py b/fetch.py
index 5d595f4..d3bcacd 100755
--- a/fetch.py
+++ b/fetch.py
@@ -111,10 +111,12 @@
   def init(self):
     # Configure and do the gclient checkout.
     self.run_gclient('config', '--spec', self.spec['gclient_spec'])
+    sync_cmd = ['sync']
     if self.options.nohooks:
-      self.run_gclient('sync', '--nohooks')
-    else:
-      self.run_gclient('sync')
+      sync_cmd.append('--nohooks')
+    if self.spec.get('with_branch_heads', False):
+      sync_cmd.append('--with_branch_heads')
+    self.run_gclient(*sync_cmd)
 
     # Configure git.
     wd = os.path.join(self.base, self.root)
@@ -159,10 +161,11 @@
       wd = os.path.join(self.base, real_path)
       if self.options.dry_run:
         print 'cd %s' % wd
-      self.run_git('svn', 'init', '--prefix=origin/', '-T',
+      prefix = svn_spec.get('svn_prefix', 'origin/')
+      self.run_git('svn', 'init', '--prefix=' + prefix, '-T',
                    svn_spec['svn_branch'], svn_spec['svn_url'], cwd=wd)
       self.run_git('config', '--replace', 'svn-remote.svn.fetch',
-                   svn_spec['svn_branch'] + ':refs/remotes/origin/' +
+                   svn_spec['svn_branch'] + ':refs/remotes/' + prefix +
                    svn_spec['svn_ref'], cwd=wd)
       self.run_git('svn', 'fetch', cwd=wd)
 
diff --git a/gclient_scm.py b/gclient_scm.py
index e17702c..b0ca582 100644
--- a/gclient_scm.py
+++ b/gclient_scm.py
@@ -358,6 +358,10 @@
         self._DeleteOrMove(options.force)
         self._Clone(revision, url, options)
       self._UpdateBranchHeads(options, fetch=True)
+      if deps_revision and deps_revision.startswith('branch-heads/'):
+        deps_branch = deps_revision.replace('branch-heads/', '')
+        self._Capture(['branch', deps_branch, deps_revision])
+        self._Capture(['checkout', '--quiet', deps_branch])
       if file_list is not None:
         files = self._Capture(['ls-files']).splitlines()
         file_list.extend([os.path.join(self.checkout_path, f) for f in files])
diff --git a/recipes/v8.py b/recipes/v8.py
new file mode 100644
index 0000000..bfa7916
--- /dev/null
+++ b/recipes/v8.py
@@ -0,0 +1,53 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import sys
+
+import recipe_util  # pylint: disable=F0401
+
+
+# This class doesn't need an __init__ method, so we disable the warning
+# pylint: disable=W0232
+class V8(recipe_util.Recipe):
+  """Basic Recipe class for V8."""
+
+  @staticmethod
+  def fetch_spec(props):
+    ref = 'branch-heads/bleeding_edge'
+    url = 'https://chromium.googlesource.com/external/v8.git@%s' % ref
+    solution = { 'name'   :'v8',
+                 'url'    : url,
+                 'deps_file': '.DEPS.git',
+                 'managed'   : False,
+                 'custom_deps': {},
+                 'safesync_url': '',
+    }
+    spec = {
+      'solutions': [solution],
+      'svn_url': 'https://v8.googlecode.com/svn',
+      'svn_branch': 'branches/bleeding_edge',
+      'svn_ref': 'bleeding_edge',
+      'svn_prefix': 'branch-heads/',
+      'with_branch_heads': True,
+    }
+    checkout_type = 'gclient_git_svn'
+    if props.get('nosvn'):
+      checkout_type = 'gclient_git'
+    spec_type = '%s_spec' % checkout_type
+    return {
+      'type': checkout_type,
+      spec_type: spec,
+    }
+
+  @staticmethod
+  def expected_root(_props):
+    return 'v8'
+
+
+def main(argv=None):
+  return V8().handle_args(argv)
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv))
