Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6942656

Browse files
committed
Index._iter_expand_paths: fixed tiny error with large impact, there was code using a / in a hardcoded fashion, leading to absolute paths where the caller expected relative ones
1 parentcbb5886 commit6942656

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

‎lib/git/ext/gitdb

Submodule gitdb updated from 425ecf0 to 18152fe

‎lib/git/index/base.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ def _iter_expand_paths(self, paths):
370370
defraise_exc(e):
371371
raisee
372372
r=self.repo.working_tree_dir
373-
rs=r+'/'
373+
rs=r+os.sep
374374
forpathinpaths:
375375
abs_path=path
376376
ifnotos.path.isabs(abs_path):
@@ -667,7 +667,6 @@ def add(self, items, force=True, fprogress=lambda *args: None, path_rewriter=Non
667667
# paths can be git-added, for everything else we use git-update-index
668668
entries_added=list()
669669
paths,entries=self._preprocess_add_items(items)
670-
671670
ifpathsandpath_rewriter:
672671
forpathinpaths:
673672
abspath=os.path.abspath(path)

‎test/git/test_index.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def _assert_fprogress(self, entries):
2424
assertlen(entries)==len(self._fprogress_map)
2525
forpath,call_countinself._fprogress_map.iteritems():
2626
assertcall_count==2
27+
# END for each item in progress map
2728
self._reset_progress()
2829

2930
def_fprogress(self,path,done,item):
@@ -44,6 +45,13 @@ def _fprogress_add(self, path, done, item):
4445
def_reset_progress(self):
4546
# maps paths to the count of calls
4647
self._fprogress_map=dict()
48+
49+
def_assert_entries(self,entries):
50+
forentryinentries:
51+
assertisinstance(entry,BaseIndexEntry)
52+
assertnotos.path.isabs(entry.path)
53+
assertnot"\\"inentry.path
54+
# END for each entry
4755

4856
deftest_index_file_base(self):
4957
# read from file
@@ -172,7 +180,7 @@ def test_index_merge_tree(self, rw_repo):
172180
# sha for it ( which makes things faster of course )
173181
manifest_fake_entry=BaseIndexEntry((manifest_entry[0],"\0"*20,0,manifest_entry[3]))
174182
# try write flag
175-
rw_repo.index.add([manifest_fake_entry],write=False)
183+
self._assert_entries(rw_repo.index.add([manifest_fake_entry],write=False))
176184
# add actually resolves the null-hex-sha for us as a feature, but we can
177185
# edit the index manually
178186
assertrw_repo.index.entries[manifest_key].binsha!=Object.NULL_BIN_SHA
@@ -420,22 +428,25 @@ def mixed_iterator():
420428
# re-add all files in lib
421429
# get the lib folder back on disk, but get an index without it
422430
index.reset(new_commit.parents[0],working_tree=True).reset(new_commit,working_tree=False)
423-
lib_file_path="lib/git/__init__.py"
431+
lib_file_path=os.path.join("lib","git","__init__.py")
424432
assert (lib_file_path,0)notinindex.entries
425433
assertos.path.isfile(os.path.join(rw_repo.working_tree_dir,lib_file_path))
426434

427435
# directory
428436
entries=index.add(['lib'],fprogress=self._fprogress_add)
437+
self._assert_entries(entries)
429438
self._assert_fprogress(entries)
430439
assertlen(entries)>1
431440

432441
# glob
433-
entries=index.reset(new_commit).add(['lib/git/*.py'],fprogress=self._fprogress_add)
442+
entries=index.reset(new_commit).add([os.path.join('lib','git','*.py')],fprogress=self._fprogress_add)
443+
self._assert_entries(entries)
434444
self._assert_fprogress(entries)
435445
assertlen(entries)==14
436446

437447
# same file
438-
entries=index.reset(new_commit).add(['lib/git/head.py']*2,fprogress=self._fprogress_add)
448+
entries=index.reset(new_commit).add([os.path.abspath(os.path.join('lib','git','head.py'))]*2,fprogress=self._fprogress_add)
449+
self._assert_entries(entries)
439450
assertentries[0].mode&0644==0644
440451
# would fail, test is too primitive to handle this case
441452
# self._assert_fprogress(entries)
@@ -448,6 +459,7 @@ def mixed_iterator():
448459
# blob from older revision overrides current index revision
449460
old_blob=new_commit.parents[0].tree.blobs[0]
450461
entries=index.reset(new_commit).add([old_blob],fprogress=self._fprogress_add)
462+
self._assert_entries(entries)
451463
self._assert_fprogress(entries)
452464
assertindex.entries[(old_blob.path,0)].hexsha==old_blob.hexshaandlen(entries)==1
453465

@@ -460,6 +472,7 @@ def mixed_iterator():
460472
new_file_relapath="my_new_file"
461473
new_file_path=self._make_file(new_file_relapath,"hello world",rw_repo)
462474
entries=index.reset(new_commit).add([BaseIndexEntry((010644,null_bin_sha,0,new_file_relapath))],fprogress=self._fprogress_add)
475+
self._assert_entries(entries)
463476
self._assert_fprogress(entries)
464477
assertlen(entries)==1andentries[0].hexsha!=null_hex_sha
465478

@@ -470,6 +483,7 @@ def mixed_iterator():
470483
link_file=os.path.join(rw_repo.working_tree_dir,basename)
471484
os.symlink(target,link_file)
472485
entries=index.reset(new_commit).add([link_file],fprogress=self._fprogress_add)
486+
self._assert_entries(entries)
473487
self._assert_fprogress(entries)
474488
assertlen(entries)==1andS_ISLNK(entries[0].mode)
475489
assertS_ISLNK(index.entries[index.entry_key("my_real_symlink",0)].mode)
@@ -484,6 +498,7 @@ def mixed_iterator():
484498
fake_symlink_path=self._make_file(fake_symlink_relapath,link_target,rw_repo)
485499
fake_entry=BaseIndexEntry((0120000,null_bin_sha,0,fake_symlink_relapath))
486500
entries=index.reset(new_commit).add([fake_entry],fprogress=self._fprogress_add)
501+
self._assert_entries(entries)
487502
self._assert_fprogress(entries)
488503
assertentries[0].hexsha!=null_hex_sha
489504
assertlen(entries)==1andS_ISLNK(entries[0].mode)
@@ -571,7 +586,7 @@ def make_paths():
571586
# END for each new file
572587
# END path producer
573588
paths=list(make_paths())
574-
index.add(paths,path_rewriter=rewriter)
589+
self._assert_entries(index.add(paths,path_rewriter=rewriter))
575590

576591
forfilenuminrange(len(paths)):
577592
assertindex.entry_key(str(filenum),0)inindex.entries

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp