Skip to content

Commit

Permalink
fix: only stage CHANGELOG.md when package version changes (#459)
Browse files Browse the repository at this point in the history
  • Loading branch information
blaugold authored Feb 4, 2023
1 parent a1a265e commit a3e9bdc
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 35 deletions.
4 changes: 3 additions & 1 deletion melos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ scripts:
env:
MELOS_TEST: true

preVersionCommit: dart run scripts/generate_version.dart
preVersionCommit: |
dart run scripts/generate_version.dart && \
git add packages/melos/lib/version.g.dart
activate:
description: Activate the local version of melos for development.
Expand Down
61 changes: 27 additions & 34 deletions packages/melos/lib/src/commands/version.dart
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,11 @@ mixin _VersionMixin on _RunMixin {
}

if (gitTag) {
await _gitStageChanges(pendingPackageUpdates, workspace);
await _gitStageChanges(
workspace,
pendingPackageUpdates,
updateDependentsVersions: updateDependentsVersions,
);
await _gitCommitChanges(
workspace,
pendingPackageUpdates,
Expand All @@ -365,7 +369,7 @@ mixin _VersionMixin on _RunMixin {
);
await _gitTagChanges(
pendingPackageUpdates,
updateDependentsVersions,
updateDependentsVersions: updateDependentsVersions,
);
}

Expand Down Expand Up @@ -648,9 +652,8 @@ mixin _VersionMixin on _RunMixin {
await Future.forEach(pendingPackageUpdates,
(MelosPendingPackageUpdate pendingPackageUpdate) async {
// Update package pubspec version.
if ((pendingPackageUpdate.reason == PackageUpdateReason.dependency &&
updateDependentsVersions) ||
pendingPackageUpdate.reason != PackageUpdateReason.dependency) {
if (pendingPackageUpdate.reason != PackageUpdateReason.dependency ||
updateDependentsVersions) {
await _setPubspecVersionForPackage(
pendingPackageUpdate.package,
pendingPackageUpdate.nextVersion,
Expand Down Expand Up @@ -679,12 +682,10 @@ mixin _VersionMixin on _RunMixin {
}

// Update changelogs if requested.
if (updateChangelog) {
if ((pendingPackageUpdate.reason == PackageUpdateReason.dependency &&
updateDependentsVersions) ||
pendingPackageUpdate.reason != PackageUpdateReason.dependency) {
await pendingPackageUpdate.changelog.write();
}
if (updateChangelog &&
(pendingPackageUpdate.reason != PackageUpdateReason.dependency ||
updateDependentsVersions)) {
await pendingPackageUpdate.changelog.write();
}
});

Expand Down Expand Up @@ -776,11 +777,10 @@ mixin _VersionMixin on _RunMixin {
}

Future<void> _gitTagChanges(
List<MelosPendingPackageUpdate> pendingPackageUpdates,
bool updateDependentsVersions,
) async {
await Future.forEach(pendingPackageUpdates,
(MelosPendingPackageUpdate pendingPackageUpdate) async {
List<MelosPendingPackageUpdate> pendingPackageUpdates, {
required bool updateDependentsVersions,
}) async {
await Future.forEach(pendingPackageUpdates, (pendingPackageUpdate) async {
if (pendingPackageUpdate.reason == PackageUpdateReason.dependency &&
!updateDependentsVersions) {
return;
Expand Down Expand Up @@ -834,9 +834,10 @@ mixin _VersionMixin on _RunMixin {
}

Future<void> _gitStageChanges(
List<MelosPendingPackageUpdate> pendingPackageUpdates,
MelosWorkspace workspace,
) async {
List<MelosPendingPackageUpdate> pendingPackageUpdates, {
required bool updateDependentsVersions,
}) async {
for (final changelog
in workspace.config.commands.version.aggregateChangelogs) {
await gitAdd(
Expand All @@ -853,11 +854,14 @@ mixin _VersionMixin on _RunMixin {
workingDirectory: pendingPackageUpdate.package.path,
logger: logger,
);
await gitAdd(
'CHANGELOG.md',
workingDirectory: pendingPackageUpdate.package.path,
logger: logger,
);
if (pendingPackageUpdate.reason != PackageUpdateReason.dependency ||
updateDependentsVersions) {
await gitAdd(
'CHANGELOG.md',
workingDirectory: pendingPackageUpdate.package.path,
logger: logger,
);
}
await Future.forEach([
...pendingPackageUpdate.package.dependentsInWorkspace.values,
...pendingPackageUpdate.package.devDependentsInWorkspace.values,
Expand All @@ -868,17 +872,6 @@ mixin _VersionMixin on _RunMixin {
logger: logger,
);
});

// TODO this is a temporary workaround for committing generated dart
// files.
// TODO remove once options exposed for this in a later release.
if (pendingPackageUpdate.package.name == 'melos') {
await gitAdd(
'**/*.g.dart',
workingDirectory: pendingPackageUpdate.package.path,
logger: logger,
);
}
});
}
}
Expand Down

0 comments on commit a3e9bdc

Please sign in to comment.