目前,我的导入块看起来像这样:
import (
"bytes"
"math"
"reflect"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"google.golang.org/protobuf/internal/encoding/pack"
pimpl "google.golang.org/protobuf/internal/impl"
"google.golang.org/protobuf/internal/pragma"
ptype "google.golang.org/protobuf/internal/prototype"
"google.golang.org/protobuf/internal/scalar"
pref "google.golang.org/protobuf/reflect/protoreflect"
preg "google.golang.org/protobuf/reflect/protoregistry"
piface "google.golang.org/protobuf/runtime/protoiface"
proto2_20180125 "google.golang.org/protobuf/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
)
大多数导入路径具有共享前缀,但缺乏对齐使得这很难看出来。最好的情况下,gofmt
会像这样对齐导入:
import (
"bytes"
"math"
"reflect"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"google.golang.org/protobuf/internal/encoding/pack"
pimpl "google.golang.org/protobuf/internal/impl"
"google.golang.org/protobuf/internal/pragma"
ptype "google.golang.org/protobuf/internal/prototype"
"google.golang.org/protobuf/internal/scalar"
pref "google.golang.org/protobuf/reflect/protoreflect"
preg "google.golang.org/protobuf/reflect/protoregistry"
piface "google.golang.org/protobuf/runtime/protoiface"
proto2_20180125 "google.golang.org/protobuf/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
)
4条答案
按热度按时间sigwle7e1#
CC @griesemer
dxxyhpgq2#
如果我们决定进行这个更改,我对此没有异议。标记为Go 1.14,待定决定。
vmdwslir3#
我正在进行一些大规模的变更(LSCs),并观察到频繁的合并冲突是由于对齐更改了比更改严格意义上涉及的行数更多的行(我经常遇到这个问题,尤其是在使用GoMap字面量和尾随注解时)。
我应该指出,虽然对齐提高了可读性,但它也带来了一个负面影响,即当两个作者修改同一个文件并添加/删除一些导入时,合并冲突的可能性更高。
b09cbbtk4#
我只是顺便提一下,在Slack上的
#tools
中讨论过这个问题:https://gophers.slack.com/archives/C0VPK4Z5E/p1580142385130500
@josharian在his response中提到,他之前曾经以https://github.com/whatsnu/semdiffstat的形式研究过这个问题。
我从未着手研究如何在合并/变基过程中使用类似
semdiffstat
的工具(这是我的主要用途,与你的用途非常相似)。