diff --git a/lib/config/common.ts b/lib/config/common.ts
index 2e6469e29bc2e7d98bf8d7acc662eedddd755871..2d17cb5fc12a2bcb3112c79a24aa31fa7d7a7332 100644
--- a/lib/config/common.ts
+++ b/lib/config/common.ts
@@ -140,7 +140,7 @@ export interface RenovateConfig
   masterIssueChecks?: Record<string, string>;
   masterIssueRebaseAllOpen?: boolean;
   masterIssueTitle?: string;
-
+  packageFile?: string;
   packageRules?: PackageRule[];
   prConcurrentLimit?: number;
   prHourlyLimit?: number;
diff --git a/lib/workers/repository/process/lookup/rollback.ts b/lib/workers/repository/process/lookup/rollback.ts
index ab030b66d7a9fde34785030821edfa6c56e1c770..e7a74ce49d2ca4a2a716a8382086cec47bb8adcc 100644
--- a/lib/workers/repository/process/lookup/rollback.ts
+++ b/lib/workers/repository/process/lookup/rollback.ts
@@ -5,7 +5,7 @@ import { LookupUpdate } from '../../../../manager/common';
 export interface RollbackConfig {
   currentValue?: string;
   depName?: string;
-  packageFile: string;
+  packageFile?: string;
   versioning: string;
 }
 
diff --git a/lib/workers/repository/updates/branchify.spec.ts b/lib/workers/repository/updates/branchify.spec.ts
index dd793fee8a9ee288fa08806940d9d566308089d5..fc7623122806441b5831ed8226336d332b01cf43 100644
--- a/lib/workers/repository/updates/branchify.spec.ts
+++ b/lib/workers/repository/updates/branchify.spec.ts
@@ -29,6 +29,7 @@ describe('workers/repository/updates/branchify', () => {
           version: '1.1.0',
           prTitle: 'some-title',
           updateType: 'minor',
+          packageFile: 'foo/package.json',
         },
       ]);
       config.repoIsOnboarded = true;
@@ -48,6 +49,7 @@ describe('workers/repository/updates/branchify', () => {
           groupName: 'some packages',
           group: {},
           separateMajorMinor: true,
+          packageFile: 'package.json',
         },
         {
           depName: 'foo',
diff --git a/lib/workers/repository/updates/branchify.ts b/lib/workers/repository/updates/branchify.ts
index 9ab9f15a7267303e3a487f9b47057a85ac931e9f..b96aa920c1ea25e68c2cd514e43b67960c24f007 100644
--- a/lib/workers/repository/updates/branchify.ts
+++ b/lib/workers/repository/updates/branchify.ts
@@ -46,6 +46,20 @@ export async function branchifyUpgrades(
   const branchUpgrades: Record<string, BranchUpgradeConfig[]> = {};
   const branches: BranchConfig[] = [];
   for (const u of updates) {
+    // extract parentDir and baseDir from packageFile
+    if (u.packageFile) {
+      const packagePath = u.packageFile.split('/');
+      if (packagePath.length > 0) {
+        packagePath.splice(-1, 1);
+      }
+      if (packagePath.length > 0) {
+        u.parentDir = packagePath[packagePath.length - 1];
+        u.baseDir = packagePath.join('/');
+      } else {
+        u.parentDir = '';
+        u.baseDir = '';
+      }
+    }
     const update: BranchUpgradeConfig = { ...u } as any;
     // Massage legacy vars just in case
     update.currentVersion = update.currentValue;
diff --git a/lib/workers/repository/updates/generate.spec.ts b/lib/workers/repository/updates/generate.spec.ts
index 999768cdd3209aa91fc5bc8dc8631bf2c81db5a5..641bc5095491fbc3d9c5bc22c0866c91f2193f25 100644
--- a/lib/workers/repository/updates/generate.spec.ts
+++ b/lib/workers/repository/updates/generate.spec.ts
@@ -266,84 +266,13 @@ describe('workers/repository/updates/generate', () => {
         'chore(package): update dependency some-dep to v1.2.0'
       );
     });
-    it('scopes monorepo commits', () => {
-      const branch = [
-        partial<BranchUpgradeConfig>({
-          ...defaultConfig,
-          depName: 'some-dep',
-          packageFile: 'foo/package.json',
-          semanticCommits: true,
-          semanticCommitType: 'chore',
-          semanticCommitScope: '{{parentDir}}',
-          lazyGrouping: true,
-          newValue: '1.2.0',
-          isSingleVersion: true,
-          toVersion: '1.2.0',
-          foo: 1,
-          group: {
-            foo: 2,
-          },
-        }),
-      ];
-      const res = generateBranchConfig(branch);
-      expect(res.prTitle).toEqual(
-        'chore(foo): update dependency some-dep to v1.2.0'
-      );
-    });
-    it('scopes monorepo commits', () => {
-      const branch = [
-        partial<BranchUpgradeConfig>({
-          ...defaultConfig,
-          depName: 'some-dep',
-          packageFile: 'foo/package.json',
-          semanticCommits: true,
-          semanticCommitType: 'chore',
-          semanticCommitScope: '{{baseDir}}',
-          lazyGrouping: true,
-          newValue: '1.2.0',
-          isSingleVersion: true,
-          toVersion: '1.2.0',
-          foo: 1,
-          group: {
-            foo: 2,
-          },
-        }),
-      ];
-      const res = generateBranchConfig(branch);
-      expect(res.prTitle).toEqual(
-        'chore(foo): update dependency some-dep to v1.2.0'
-      );
-    });
-    it('scopes monorepo commits', () => {
-      const branch = [
-        partial<BranchUpgradeConfig>({
-          ...defaultConfig,
-          depName: 'some-dep',
-          packageFile: 'package.json',
-          semanticCommits: true,
-          semanticCommitType: 'chore',
-          semanticCommitScope: '{{parentDir}}',
-          lazyGrouping: true,
-          newValue: '1.2.0',
-          isSingleVersion: true,
-          toVersion: '1.2.0',
-          foo: 1,
-          group: {
-            foo: 2,
-          },
-        }),
-      ];
-      const res = generateBranchConfig(branch);
-      expect(res.prTitle).toEqual(
-        'chore(): update dependency some-dep to v1.2.0'
-      );
-    });
     it('scopes monorepo commits', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
           depName: 'some-dep',
           packageFile: 'package.json',
+          baseDir: '',
           semanticCommits: true,
           semanticCommitType: 'chore',
           semanticCommitScope: '{{baseDir}}',
@@ -369,6 +298,7 @@ describe('workers/repository/updates/generate', () => {
           commitBodyTable: false,
           depName: 'some-dep',
           packageFile: 'foo/bar/package.json',
+          parentDir: 'bar',
           semanticCommits: true,
           semanticCommitType: 'chore',
           semanticCommitScope: '{{parentDir}}',
@@ -393,6 +323,7 @@ describe('workers/repository/updates/generate', () => {
           ...defaultConfig,
           depName: 'some-dep',
           packageFile: 'foo/bar/package.json',
+          baseDir: 'foo/bar',
           semanticCommits: true,
           semanticCommitType: 'chore',
           semanticCommitScope: '{{baseDir}}',
diff --git a/lib/workers/repository/updates/generate.ts b/lib/workers/repository/updates/generate.ts
index 32cfc898e51e46ef55ae1ea25fced19894cb18dc..5ff3bf83db8798ce9c18b145bae0ee61ca67faf6 100644
--- a/lib/workers/repository/updates/generate.ts
+++ b/lib/workers/repository/updates/generate.ts
@@ -169,20 +169,6 @@ export function generateBranchConfig(
     } else if (semver.valid(toVersions[0])) {
       upgrade.isRange = false;
     }
-    // extract parentDir and baseDir from packageFile
-    if (upgrade.packageFile) {
-      const packagePath = upgrade.packageFile.split('/');
-      if (packagePath.length > 0) {
-        packagePath.splice(-1, 1);
-      }
-      if (packagePath.length > 0) {
-        upgrade.parentDir = packagePath[packagePath.length - 1];
-        upgrade.baseDir = packagePath.join('/');
-      } else {
-        upgrade.parentDir = '';
-        upgrade.baseDir = '';
-      }
-    }
     // Use templates to generate strings
     logger.trace('Compiling branchName: ' + upgrade.branchName);
     upgrade.branchName = template.compile(upgrade.branchName, upgrade);