Skip to content
Snippets Groups Projects
Commit 01f5035b authored by Sean McGivern's avatar Sean McGivern
Browse files

Fix squash with renamed files

We need to ignore the names for renamed files when configuring with sparse
checkout.
parent 0b032daa
No related branches found
No related tags found
No related merge requests found
---
title: Fix squashing when a file is renamed
merge_request:
author:
type: fixed
Loading
Loading
@@ -2188,7 +2188,7 @@ module Gitlab
)
diff_range = "#{start_sha}...#{end_sha}"
diff_files = run_git!(
%W(diff --name-only --diff-filter=a --binary #{diff_range})
%W(diff --name-only --diff-filter=ar --binary #{diff_range})
).chomp
 
with_worktree(squash_path, branch, sparse_checkout_files: diff_files, env: env) do
Loading
Loading
Loading
Loading
@@ -2204,7 +2204,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
context 'sparse checkout', :skip_gitaly_mock do
let(:expected_files) { %w(files files/js files/js/application.js) }
 
before do
it 'checks out only the files in the diff' do
allow(repository).to receive(:with_worktree).and_wrap_original do |m, *args|
m.call(*args) do
worktree_path = args[0]
Loading
Loading
@@ -2216,11 +2216,34 @@ describe Gitlab::Git::Repository, seed_helper: true do
expect(Dir[files_pattern]).to eq(expected)
end
end
end
 
it 'checkouts only the files in the diff' do
subject
end
context 'when the diff contains a rename' do
let(:repo) { Gitlab::Git::Repository.new('default', TEST_REPO_PATH, '').rugged }
let(:end_sha) { new_commit_move_file(repo).oid }
after do
# Erase our commits so other tests get the original repo
repo = Gitlab::Git::Repository.new('default', TEST_REPO_PATH, '').rugged
repo.references.update('refs/heads/master', SeedRepo::LastCommit::ID)
end
it 'does not include the renamed file in the sparse checkout' do
allow(repository).to receive(:with_worktree).and_wrap_original do |m, *args|
m.call(*args) do
worktree_path = args[0]
files_pattern = File.join(worktree_path, '**', '*')
expect(Dir[files_pattern]).not_to include('CHANGELOG')
expect(Dir[files_pattern]).not_to include('encoding/CHANGELOG')
end
end
subject
end
end
end
 
context 'with an ASCII-8BIT diff', :skip_gitaly_mock do
Loading
Loading
@@ -2230,7 +2253,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
allow(repository).to receive(:run_git!).and_call_original
allow(repository).to receive(:run_git!).with(%W(diff --binary #{start_sha}...#{end_sha})).and_return(diff.force_encoding('ASCII-8BIT'))
 
expect(subject.length).to eq(40)
expect(subject).to match(/\h{40}/)
end
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment