Index: drush_pm.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/drush/drush_pm/drush_pm.module,v
retrieving revision 1.18
diff -u -p -r1.18 drush_pm.module
--- drush_pm.module	22 Mar 2008 02:49:04 -0000	1.18
+++ drush_pm.module	28 Mar 2008 20:46:27 -0000
@@ -254,6 +254,16 @@ function drush_pm_update() {  
   foreach($updateable as $project) {
     drush_verbose(t('Starting to update !project ...', array('!project' => $project['title'])));
     
+    // $basepath is the dir where the current module is installed. It's one dir up from the
+    // place of the project's info files.
+    $basepath = explode('/', $project['path']);
+    // move a directory up, so we can copy updated dir to parent
+    array_pop($basepath);
+    $project_parent_path = DRUSH_DRUPAL_ROOT. '/'. implode('/', $basepath). '/';
+    // move another directory up, so we can keep the backups in the same general location
+    array_pop($basepath);
+    $backup_parent_path = DRUSH_DRUPAL_ROOT. '/'. implode('/', $basepath). '/';
+
     $svn = FALSE;
     $source = DRUSH_DRUPAL_ROOT .'/' . $project['path'];
     if (file_exists($source. '/.svn')) {
@@ -262,8 +272,8 @@ function drush_pm_update() {  
       $svn = TRUE;
     }
     else {
-      $date = date('Ymd');
-      $backup_dir = DRUSH_DRUPAL_ROOT. "/backup/modules/$date";
+      $date = date('YmdHis');
+      $backup_dir = $backup_parent_path ."backup/modules/$date";
       drush_op('mkdir', $backup_dir, 0777, TRUE);
       $backup_target = $backup_dir . '/'. $project['name'];
       if (!drush_op('rename', $source, $backup_target)) {
@@ -272,12 +282,6 @@ function drush_pm_update() {  
     }
 
     // Install the new version.
-    // $basepath is the dir where the current module is installed. It's one dir up from the
-    // place of the project's info files.
-    $basepath = explode('/', $project['path']);
-    // move a directory up, so we can copy updated dir to parent
-    array_pop($basepath);
-    $project_parent_path = DRUSH_DRUPAL_ROOT. '/'. implode('/', $basepath). '/';
     if (!$package_handler($project['name'], $project['releases'][$project['candidate_version']], $project_parent_path)) {
       drush_error(t('Updating project !project failed. Restoring previously installed version.', array('!project' => $project['name'])));
       drush_op('rename', $backup_target, $source);
