Генерация заметок о выпуске из коммитов git - PullRequest
0 голосов
/ 10 ноября 2018

Я создал следующую задачу rake ниже, чтобы сгенерировать примечания к выпуску для каждого спринта.
Я фиксирую все коммиты до master старше 2 недель.

Проблема в том, что когда ветка была разработана для более чем двухнедельного спринта, более старые коммиты не будут включены.

Кто-нибудь может подсказать, как я могу получить эти коммиты?

task :new_release_note do

  puts "Creating new release note"
  puts "..."

  git_log = `git log --since="two weeks ago" --no-merges --format=%B`
  git_log.gsub!(/^$\n/, '')
  git_log.gsub!(/^/, "* ") 

  current_time = DateTime.now 
  current_date = current_time.strftime "%Y-%m-%d"
  current_date_UK = current_time.strftime "%d-%m-%Y"

  template = "__Release Notes__
  =======================
  #{current_date_UK}

  __New Features__
  ----------------

  * -


  __Improvements__
  ----------------

  * -


  __Fixes__
  ---------

  * -


  __Change Log__
  ----------------

  Detailed release notes below, listing all commit messages for this release.


  #{git_log}
  "

  out_file = File.new("./doc/release_notes/release-notes-#{current_date}.md", "w")
  out_file.puts(template)

  if File.exist?(out_file) 
    puts "New release note generated successfully at /doc/release-notes/release-notes-#{current_date}.md"
  else 
    puts "Error - file not generated."
  end 

end

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Кто-нибудь может подсказать, как я могу получить эти коммиты?

Несколько вариантов:

  1. git tag
  2. git notes
  3. git whatchanged

git tag

Прочтите этот ответ о том, что такое git tag и как его использовать: Что такоетег git, как создавать теги и как оформить заказ удаленного тега (ов) git

Короче говоря: тег git позволяет пометить коммит, который может быть позже для выполнения слияния.Как вы знаете,

git pull = git fetch + git merge

Итак, отметив свое последнее слияние тегом, вы можете извлечь все изменения из последнего слияния

# "Merge" the last X commits based upon your previous tag
git cherry-pick <tag_name>..master

git notes

git notes позволяют нам добавлять контент для фиксации без обновления SHA-1 коммита, что означает, что мы можем прикреплять контент к коммиту, оставляя SHA-1 без изменений.

enter image description here

Теперь, когда у вас есть свои заметки, вы можете найти последний коммит, который вы «слили» ранее, и получить изменения с этого момента, используя вышеуказанное cherry-pick.

Вы можете искать и находить свои заметки с помощью git log --grep


git whatchanged

После того, как вы сделаете коммит, на который вы ссылаетесь, вы можете увидеть списокфайлы, которые были обновлены в этот период с помощью команды git whatchanged

# Print out a list of files which was updated/added between the 2 commits
git whatchanged <TAG_NAME>...HEAD

enter image description here

0 голосов
/ 10 ноября 2018

Подумайте об использовании git tag и пометьте ваши версии номерами версий. Моя команда создает ветку релиза с номером версии для каждого релиза, т.е. release-2.5.8, и когда релиз готов, он объединяется в master. Затем мы помечаем коммит слияния с номером версии, т. Е. v2.5.8 Если вы сделаете это вместе со сквош-слиянием, то увидеть все связанные коммиты так же просто, как сделать:

git log v2.5.8...v2.5.9

Который покажет вам все коммиты в этих двух выпусках.

Причина, по которой я рекомендую сквош-слияние для вашей ветви функций, именно для вашего случая использования. Вы хотите знать, что было сделано во время разработки этой функции, но как вы можете просто по дате? Вы действительно не можете. Поэтому, когда ваша функция готова к слиянию с вашей версией, если вы объединяете слияние, вы можете сохранить все заметки в одном коммите для слияния этой функции. Идея в том, что вы сохраняете то, что имеет отношение к делу, и отбрасываете то, что больше не нужно во время разработки.

Вы также можете проверить Gitflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...