buildpackage: fix exporting of working copy when run from a subdir
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Thu, 25 Oct 2012 06:25:25 +0000 (09:25 +0300)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 3 Mar 2015 08:07:46 +0000 (10:07 +0200)
Exporting sources failed when git-buildpackage was run from a
subdirectory of the git working directory because the path of the custom
index file was not handled correctly.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
gbp/scripts/buildpackage.py
gbp/scripts/buildpackage_rpm.py
gbp/scripts/common/buildpackage.py

index 03a4efc4e9713ecf1978d7dbb5fba94f0ee66a5b..b936ab11faa442770cd126a9b24e337c672fdd4d 100755 (executable)
@@ -647,7 +647,7 @@ def main(argv):
         source = None
         retval = 1
     finally:
-        drop_index()
+        drop_index(repo)
 
     if not options.tag_only:
         if options.export_dir and options.purge and not retval:
index 11eb9fcc85c7a31b1de5191acba388ccf80b5e04..06e4a3ad742c7a02d7d2e4aed13aefa6b9e4dee1 100755 (executable)
@@ -653,7 +653,7 @@ def main(argv):
             gbp.log.err(err)
         retval = 1
     finally:
-        drop_index()
+        drop_index(repo)
         del_tmpdir()
 
     if not options.tag_only:
index c58dacb7b9870779e0df6904706c3a7e05d1e936..3381184ea1834b7b0db2dd40acc4f60add4e286b 100644 (file)
@@ -37,8 +37,6 @@ wc_names = {'WC':           {'force': True, 'untracked': True},
             'WC.TRACKED':   {'force': False, 'untracked': False},
             'WC.UNTRACKED': {'force': False, 'untracked': True},
             'WC.IGNORED':   {'force': True, 'untracked': True}}
-# index file name used to export working copy
-wc_index = ".git/gbp_index"
 
 
 def sanitize_prefix(prefix):
@@ -176,21 +174,25 @@ def dump_tree(repo, export_dir, treeish, with_submodules, recursive=True):
     return True
 
 
+def wc_index(repo):
+    """Get path of the temporary index file used for exporting working copy"""
+    return os.path.join(repo.git_dir, "gbp_index")
+
 def write_wc(repo, force=True, untracked=True):
     """write out the current working copy as a treeish object"""
-    clone_index()
-    repo.add_files(repo.path, force=force, untracked=untracked, index_file=wc_index)
-    tree = repo.write_tree(index_file=wc_index)
+    clone_index(repo)
+    repo.add_files(repo.path, force=force, untracked=untracked, index_file=wc_index(repo))
+    tree = repo.write_tree(index_file=wc_index(repo))
     return tree
 
 
-def drop_index():
+def drop_index(repo):
     """drop our custom index"""
-    if os.path.exists(wc_index):
-        os.unlink(wc_index)
+    if os.path.exists(wc_index(repo)):
+        os.unlink(wc_index(repo))
 
-def clone_index():
+def clone_index(repo):
     """Copy the current index file to our custom index file"""
-    indexfn = ".git/index"
+    indexfn = os.path.join(repo.git_dir, "index")
     if os.path.exists(indexfn):
-        shutil.copy2(indexfn, wc_index)
+        shutil.copy2(indexfn, wc_index(repo))