Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check if pkgbuild merge is possible | resolves #2435 #2443

Open
wants to merge 3 commits into
base: next
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions local_install_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ func TestIntegrationLocalInstall(t *testing.T) {

wantCapture := []string{
"makepkg --packagelist",
"git -C testdata/jfin branch --show-current",
"git -C testdata/jfin git reset --hard HEAD",
"git -C testdata/jfin git merge --no-edit --ff",
"makepkg --packagelist",
Expand Down Expand Up @@ -337,6 +338,7 @@ func TestIntegrationLocalInstallNeeded(t *testing.T) {

wantCapture := []string{
"makepkg --packagelist",
"git -C testdata/jfin branch --show-current",
"git -C testdata/jfin git reset --hard HEAD",
"git -C testdata/jfin git merge --no-edit --ff",
"makepkg --packagelist",
Expand Down Expand Up @@ -510,6 +512,7 @@ func TestIntegrationLocalInstallGenerateSRCINFO(t *testing.T) {
wantCapture := []string{
"makepkg --printsrcinfo",
"makepkg --packagelist",
"git -C testdata/jfin branch --show-current",
"git -C testdata/jfin git reset --hard HEAD",
"git -C testdata/jfin git merge --no-edit --ff",
"makepkg --packagelist",
Expand Down Expand Up @@ -795,6 +798,7 @@ func TestIntegrationLocalInstallWithDepsProvides(t *testing.T) {
}

wantCapture := []string{
"git -C testdata/cephbin branch --show-current",
"git -C testdata/cephbin git reset --hard HEAD",
"git -C testdata/cephbin git merge --no-edit --ff",
"makepkg --packagelist",
Expand Down Expand Up @@ -923,8 +927,10 @@ func TestIntegrationLocalInstallTwoSrcInfosWithDeps(t *testing.T) {
}

wantCapture := []string{
"git -C testdata/gourou branch --show-current",
"git -C testdata/gourou git reset --hard HEAD",
"git -C testdata/gourou git merge --no-edit --ff",
"git -C testdata/libzip-git branch --show-current",
"git -C testdata/libzip-git git reset --hard HEAD",
"git -C testdata/libzip-git git merge --no-edit --ff",
"makepkg --packagelist",
Expand Down
20 changes: 19 additions & 1 deletion pkg/sync/workdir/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,27 @@ func gitMerge(ctx context.Context, cmdBuilder exe.ICmdBuilder, dir string) error
return nil
}

func pkgbuildCanMerge(ctx context.Context, cmdBuilder exe.ICmdBuilder, dir string) (bool, error) {
stdout, stderr, err := cmdBuilder.Capture(
cmdBuilder.BuildGitCmd(ctx,
dir, "branch", "--show-current"))
if err != nil {
return false, errors.New(gotext.Get("error showing branch %s: %s", dir, stderr))
}

return stdout != "", nil
}

func mergePkgbuilds(ctx context.Context, cmdBuilder exe.ICmdBuilder, pkgbuildDirs map[string]string) error {
for _, dir := range pkgbuildDirs {
err := gitMerge(ctx, cmdBuilder, dir)
canMerge, err := pkgbuildCanMerge(ctx, cmdBuilder, dir)
if err != nil {
return err
}
if !canMerge {
continue
}
err = gitMerge(ctx, cmdBuilder, dir)
if err != nil {
return err
}
Expand Down
1 change: 1 addition & 0 deletions sync_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,7 @@ pkgname = python-vosk
require.NoError(t, err)

wantCapture := []string{
"/usr/bin/git -C testdata/vosk-api branch --show-current",
"/usr/bin/git -C /testdir/vosk-api reset --hard HEAD",
"/usr/bin/git -C /testdir/vosk-api merge --no-edit --ff",
"makepkg --packagelist", "makepkg --packagelist",
Expand Down