Ниже мой хук для сообщения коммита, он отлично работает для всех слияний и коммитов, которые выполняются вручную.Когда я пытаюсь использовать его с rebase, он перестает говорить
"Эта ветвь только для Merge Commits, здесь нельзя зафиксировать код напрямую".
Он напрямую фиксирует код по умолчанию.Разве это не слияние?
Необходимость ловушки состоит в том, чтобы избежать любых прямых фиксаций в ветке по умолчанию, а фиксация должна выполняться только в ветке функции (другие ветки, отличные от стандартной).Кроме того, если в ветви не соблюдается правильное соглашение об именах, оно не будет выполнено
Пожалуйста, дайте мне знать, как я могу разрешить коммиты rebase или я что-то упустил на крючке?
import re
def commitmessage(ui, repo, *args, **kwargs):
changectx = repo[kwargs['node']]
if changectx.branch() == 'default' :
if kwargs['parent2'] == '':
if changectx.rev() == 0:
return 0
tagsfilepresent = 0
totalfiles = 0
for aFile in changectx.files():
totalfiles = totalfiles + 1
if aFile == '.hgtags':
tagsfilepresent = 1
if totalfiles == 1 and tagsfilepresent == 1:
return 0
ui.write(changectx.branch() + ' This branch is only for Merge Commits, cannot commit the code directly here\n\n')
return 1
secondarybranchname = repo[kwargs['parent2']].branch()
ui.write('Merging ' + secondarybranchname + ' to default\n')
ui.write('Merge Commit Successful to default for ticket: ' + secondarybranchname[1:] + '\n')
return 0
m = re.match('^t(\d{4,5})$', changectx.branch())
if m:
ui.write('Commit Successful to ' + m.group(1) + '\n')
return 0
else:
ui.write('Branch name is not Acceptable, it should be either default or t(numeric)\n')
return 1
ui.write('If you think this special case is not handled here, please notify' + '\n')
return 1