diff --git a/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_svn_bt.xml b/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_vcs_bt.xml
similarity index 91%
rename from bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_svn_bt.xml
rename to bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_vcs_bt.xml
index 1a71d795e52be4c8b9077aabe5cc558e2d488a29..66a3cc1254dca474c0c5dc3e68f326ffc98b735a 100644
--- a/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_svn_bt.xml
+++ b/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_vcs_bt.xml
@@ -30,7 +30,9 @@
         </item>
         <item>
             <key> <string>description</string> </key>
-            <value> <string></string> </value>
+            <value>
+              <none/>
+            </value>
         </item>
         <item>
             <key> <string>icon</string> </key>
@@ -38,7 +40,7 @@
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>update_svn_bt</string> </value>
+            <value> <string>update_vcs_bt</string> </value>
         </item>
         <item>
             <key> <string>permissions</string> </key>
@@ -56,7 +58,7 @@
             <key> <string>title</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-Revert & Update Business Template from SVN
+Revert & Update Business Template from VCS
 
 ]]></string> </value>
         </item>
@@ -75,7 +77,7 @@ Revert & Update Business Template from SVN
       <dictionary>
         <item>
             <key> <string>text</string> </key>
-            <value> <string>string:${object_url}/BusinessTemplate_doSvnUpdate</string> </value>
+            <value> <string>string:${object_url}/BusinessTemplate_doVcsUpdate</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_svn_bt_norevert.xml b/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_vcs_bt_norevert.xml
similarity index 92%
rename from bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_svn_bt_norevert.xml
rename to bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_vcs_bt_norevert.xml
index 8b6a9edbaafee6ec3063ad79ccff9d49c5dc2da2..4f0217d4b93ba10d66a005e69369b84d899586f0 100644
--- a/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_svn_bt_norevert.xml
+++ b/bt5/erp5_forge/ActionTemplateItem/portal_types/Business%20Template/update_vcs_bt_norevert.xml
@@ -40,7 +40,7 @@
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>update_svn_bt_norevert</string> </value>
+            <value> <string>update_vcs_bt_norevert</string> </value>
         </item>
         <item>
             <key> <string>permissions</string> </key>
@@ -56,7 +56,7 @@
         </item>
         <item>
             <key> <string>title</string> </key>
-            <value> <string>Update Business Template from SVN</string> </value>
+            <value> <string>Update Business Template from VCS</string> </value>
         </item>
         <item>
             <key> <string>visible</string> </key>
@@ -73,7 +73,7 @@
       <dictionary>
         <item>
             <key> <string>text</string> </key>
-            <value> <string>string:${object_url}/BusinessTemplate_doSvnUpdate?keep:int=1</string> </value>
+            <value> <string>string:${object_url}/BusinessTemplate_doVcsUpdate?keep:int=1</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_vcs/BusinessTemplate_doSvnUpdate.xml b/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_vcs/BusinessTemplate_doVcsUpdate.xml
similarity index 97%
rename from bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_vcs/BusinessTemplate_doSvnUpdate.xml
rename to bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_vcs/BusinessTemplate_doVcsUpdate.xml
index 97c2caa63b80e7d3e0b2e57d123a89712362c8f6..51fcf16c90cb24a81eebb657110b7b7c82575f67 100644
--- a/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_vcs/BusinessTemplate_doSvnUpdate.xml
+++ b/bt5/erp5_forge/SkinTemplateItem/portal_skins/erp5_vcs/BusinessTemplate_doVcsUpdate.xml
@@ -73,7 +73,7 @@ return request.RESPONSE.redirect(\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>BusinessTemplate_doSvnUpdate</string> </value>
+            <value> <string>BusinessTemplate_doVcsUpdate</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_forge/bt/revision b/bt5/erp5_forge/bt/revision
index e2756006dac243cc4d36ad71f5af3ed5c0211e94..0c1a9b6f06b7455bfa5e5419b38675b5d46eb95a 100644
--- a/bt5/erp5_forge/bt/revision
+++ b/bt5/erp5_forge/bt/revision
@@ -1 +1 @@
-644
\ No newline at end of file
+645
\ No newline at end of file
diff --git a/bt5/erp5_forge/bt/template_action_path_list b/bt5/erp5_forge/bt/template_action_path_list
index ed0890bff7cbe8dd4bb30f230c139c2bad4dae87..8afcb866ab712d22f35f82bc6dce0b077c238d55 100644
--- a/bt5/erp5_forge/bt/template_action_path_list
+++ b/bt5/erp5_forge/bt/template_action_path_list
@@ -15,8 +15,8 @@ Business Template | manage_field_library
 Business Template | rename_proxy_field
 Business Template | svn_cleanup_locks
 Business Template | svn_commit
-Business Template | update_svn_bt
-Business Template | update_svn_bt_norevert
+Business Template | update_vcs_bt
+Business Template | update_vcs_bt_norevert
 Business Template | view_svn_repos_info
 Glossary Module | create_term_for_translation
 Glossary Module | export_po_file
diff --git a/product/ERP5VCS/Git.py b/product/ERP5VCS/Git.py
index 70ee0cc9ad71c4ce5a7e88da6aeb95bc8efbb759..bb3bc732d67f44af7c6e3268b6896e91bbce4518 100644
--- a/product/ERP5VCS/Git.py
+++ b/product/ERP5VCS/Git.py
@@ -201,6 +201,27 @@ class Git(WorkingCopy):
             path_list.append((content, child))
     return (root.sub_dirs or root.sub_files) and root
 
+  def update(self, keep=False):
+    if self.getAheadCount():
+      raise NotImplementedError
+    if not keep:
+      self.clean()
+      self.git('pull', '--ff-only')
+    elif 1: # elif local_changes:
+      raise NotImplementedError
+      # addremove
+      # write-tree | commit-tree -> A
+      # symbolic-ref HEAD -> B
+      # try:
+      #   checkout -f @{u}
+      #   cherry-pick -n A || :
+      #   update-ref B HEAD
+      # finally:
+      #   symbolic-ref HEAD B
+    else:
+      self.git('pull', '--ff-only')
+    return self.aq_parent.download(self.working_copy)
+
   def showOld(self, path):
     return self.git('show', 'HEAD:' + self.prefix + path,
                     strip=False, cwd=self.toplevel)