Version control 避免合并冲突的策略,例如在git中
附加或前置的文件通常有合并冲突的倾向 例如,我们在存储库的顶层有一个Version control 避免合并冲突的策略,例如在git中,version-control,merge-conflict-resolution,Version Control,Merge Conflict Resolution,附加或前置的文件通常有合并冲突的倾向 例如,我们在存储库的顶层有一个ChangeLog.txt文件。每当有人做出重大更改时,都会在ChangeLog.txt前面添加对客户友好的更改描述。这会导致频繁的合并冲突,因为不同的开发人员合并单独的更改,或者单个开发人员重新设置基础并更改提交顺序,从而ChangeLog.txt更改顺序 (我们还有一个UpgradeDatabaseSchema.pmperl库,它同样有N个条目,pr.version也有合并冲突,但是让我们继续使用ChangeLog.txt)
ChangeLog.txt
文件。每当有人做出重大更改时,都会在ChangeLog.txt
前面添加对客户友好的更改描述。这会导致频繁的合并冲突,因为不同的开发人员合并单独的更改,或者单个开发人员重新设置基础并更改提交顺序,从而ChangeLog.txt
更改顺序
(我们还有一个UpgradeDatabaseSchema.pm
perl库,它同样有N个条目,pr.version也有合并冲突,但是让我们继续使用ChangeLog.txt
)
如何很好地避免这种合并冲突
我唯一想到的是一个目录结构,在这个结构中,我们不提交ChangeLog.txt
,而是将条目提交到单独文件中的ChangeLog
目录:
changeLog/
v1.1/
fooFeature.txt
bug-4524-fix.txt
refactoredWhatever.txt
v1.2/
bug-4522-fix.txt
barFeature.txt
removedFoobar.txt
然后让ChangeLog.txt
以某种方式连接这些文件(而不是在git中跟踪/提交ChangeLog.txt
)。这有点麻烦
我们还简要考虑过只使用git log
而不是ChangeLog.txt
,但不会这样做,因为受众不同:git log是针对开发人员的,而ChangeLog.txt
是针对客户的。此外,如果不改变git历史记录并打破每个人的分支,就很难在git log
中更改提交的描述
因此:
- 与合并冲突共存
- 使用目录结构而不是单个平面文件
- 使用git日志
ChangeLog.txt merge=union