diff --git a/third_party/go/patches/goimports-group-merging.patch b/third_party/go/patches/goimports-group-merging.patch
new file mode 100644
index 0000000..ed87faf
--- /dev/null
+++ b/third_party/go/patches/goimports-group-merging.patch
@@ -0,0 +1,152 @@
+Upstream CL: https://go-review.googlesource.com/c/tools/+/321409
+
+From cdd84f3789f3ebbd1c55dc220bbbe4a77ab4024a Mon Sep 17 00:00:00 2001
+From: Moekr <1143757638wlw@gmail.com>
+Date: Thu, 20 May 2021 15:41:17 +0800
+Subject: [PATCH] internal/imports: merge mergeable import groups
+
+Merge two import groups if there is no comments between them.
+This can make import blocks look more pretty.
+
+Fixes golang/go#20818 golang/go#28200
+
+Change-Id: Ic02ca83bd778e6d5b5b3c15292cde4fba6c842a9
+---
+ internal/imports/fix_test.go    | 65 +++++++++++++++++++++++++++++----
+ internal/imports/sortimports.go | 23 ++++++++++--
+ 2 files changed, 77 insertions(+), 11 deletions(-)
+
+diff --git a/internal/imports/fix_test.go b/internal/imports/fix_test.go
+index 005bf96e..5ff84cdd 100644
+--- a/internal/imports/fix_test.go
++++ b/internal/imports/fix_test.go
+@@ -553,7 +553,6 @@ c = fmt.Printf
+ 
+ import (
+ 	"fmt"
+-
+ 	"gu"
+ 
+ 	"manypackages.com/packagea"
+@@ -644,15 +643,11 @@ var _, _, _, _, _ = fmt.Errorf, io.Copy, strings.Contains, renamed_packagea.A, B
+ 
+ import (
+ 	"fmt"
+-
+-	renamed_packagea "manypackages.com/packagea"
+-
+ 	"io"
+-
+-	. "manypackages.com/packageb"
+-
+ 	"strings"
+ 
++	renamed_packagea "manypackages.com/packagea"
++	. "manypackages.com/packageb"
+ 	_ "manypackages.com/packagec"
+ )
+ 
+@@ -1151,6 +1146,62 @@ var _, _ = rand.Read, rand.NewZipf
+ import "math/rand"
+ 
+ var _, _ = rand.Read, rand.NewZipf
++`,
++	},
++	{
++		name: "comment_between_imports_simple",
++		in: `package main
++
++import (
++	_ "foo2"
++	// foo3 has side effects.
++	_ "foo3"
++	_ "foo1"
++)
++`,
++		out: `package main
++
++import (
++	_ "foo2"
++	// foo3 has side effects.
++	_ "foo1"
++	_ "foo3"
++)
++`,
++	},
++	{
++		name: "comment_between_imports_complex",
++		in: `package main
++
++import (
++	_ "foo1" // foo1, "std" package
++	_ "github.com/bar/foo1" // github.com/bar/foo1, third-party package
++	_ "local/foo1" // local/foo1, local package
++
++	_ "appengine"
++
++	_ "foo2"
++	// local/foo3 comment
++	_ "local/foo3"
++	_ "github.com/bar/foo2"
++)
++`,
++		out: `package main
++
++import (
++	_ "foo1" // foo1, "std" package
++	_ "foo2"
++	_ "local/foo1" // local/foo1, local package
++
++	_ "github.com/bar/foo1" // github.com/bar/foo1, third-party package
++
++	_ "appengine"
++
++	// local/foo3 comment
++	_ "local/foo3"
++
++	_ "github.com/bar/foo2"
++)
+ `,
+ 	},
+ }
+diff --git a/internal/imports/sortimports.go b/internal/imports/sortimports.go
+index be8ffa25..25c5ca3f 100644
+--- a/internal/imports/sortimports.go
++++ b/internal/imports/sortimports.go
+@@ -34,14 +34,29 @@ func sortImports(localPrefix string, fset *token.FileSet, f *ast.File) {
+ 			continue
+ 		}
+ 
++		// Find comments.
++		commentLines := make([]int, len(f.Comments))
++		for j, comment := range f.Comments {
++			commentLines[j] = fset.Position(comment.Pos()).Line
++		}
++
+ 		// Identify and sort runs of specs on successive lines.
+ 		i := 0
+ 		specs := d.Specs[:0]
+ 		for j, s := range d.Specs {
+-			if j > i && fset.Position(s.Pos()).Line > 1+fset.Position(d.Specs[j-1].End()).Line {
+-				// j begins a new run.  End this one.
+-				specs = append(specs, sortSpecs(localPrefix, fset, f, d.Specs[i:j])...)
+-				i = j
++			if j > i {
++				curLine, prevLine := fset.Position(s.Pos()).Line, fset.Position(d.Specs[j-1].End()).Line
++				if curLine > 1+prevLine {
++					// j begins a new run.
++					for _, commentLine := range commentLines {
++						if prevLine < commentLine && commentLine < curLine {
++							// End this one if there is a comment before the new one.
++							specs = append(specs, sortSpecs(localPrefix, fset, f, d.Specs[i:j])...)
++							i = j
++							break
++						}
++					}
++				}
+ 			}
+ 		}
+ 		specs = append(specs, sortSpecs(localPrefix, fset, f, d.Specs[i:])...)
+-- 
+2.31.1
+
