isomorphic-git 1.10.1 → 1.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -338,6 +338,7 @@ Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds
338
338
  <td align="center"><a href="https://ryotak.me/"><img src="https://avatars.githubusercontent.com/u/49341894?v=4?s=60" width="60px;" alt=""/><br /><sub><b>RyotaK</b></sub></a><br /><a href="https://github.com/isomorphic-git/isomorphic-git/issues?q=author%3ARy0taK" title="Bug reports">🐛</a></td>
339
339
  <td align="center"><a href="https://github.com/strangedev"><img src="https://avatars.githubusercontent.com/u/3045979?v=4?s=60" width="60px;" alt=""/><br /><sub><b>Noah Hummel</b></sub></a><br /><a href="https://github.com/isomorphic-git/isomorphic-git/commits?author=strangedev" title="Code">💻</a> <a href="https://github.com/isomorphic-git/isomorphic-git/commits?author=strangedev" title="Tests">⚠️</a></td>
340
340
  <td align="center"><a href="https://github.com/mtlewis"><img src="https://avatars.githubusercontent.com/u/542836?v=4?s=60" width="60px;" alt=""/><br /><sub><b>Mike Lewis</b></sub></a><br /><a href="https://github.com/isomorphic-git/isomorphic-git/commits?author=mtlewis" title="Documentation">📖</a></td>
341
+ <td align="center"><a href="https://twitter.com/SamVerschueren"><img src="https://avatars.githubusercontent.com/u/1913805?v=4?s=60" width="60px;" alt=""/><br /><sub><b>Sam Verschueren</b></sub></a><br /><a href="https://github.com/isomorphic-git/isomorphic-git/commits?author=SamVerschueren" title="Code">💻</a></td>
341
342
  </tr>
342
343
  </table>
343
344
 
@@ -1,8 +1,8 @@
1
1
  [
2
2
  "HeadlessChrome 0.0.0 (Linux 0.0.0)",
3
- "Firefox 92.0.0 (Ubuntu 0.0.0)",
3
+ "Firefox 96.0.0 (Ubuntu 0.0.0)",
4
4
  "Chrome 79.0.3945 (Windows 10 0.0.0)",
5
- "Chrome Mobile 91.0.4472 (Android 0.0.0)",
5
+ "Chrome Mobile 96.0.4664 (Android 0.0.0)",
6
6
  "Safari 13.1.0 (Mac OS X 10.15.4)",
7
7
  "Mobile Safari 13.0.0 (iOS 13.0.0)"
8
8
  ]
package/index.cjs CHANGED
@@ -1559,16 +1559,16 @@ class GitConfig {
1559
1559
  this.parsedConfig[configIndex] = modifiedConfig;
1560
1560
  }
1561
1561
  } else {
1562
- const sectionPath = path
1563
- .split('.')
1564
- .slice(0, -1)
1565
- .join('.')
1566
- .toLowerCase();
1562
+ const pathSegments = path.split('.');
1563
+ const section = pathSegments.shift().toLowerCase();
1564
+ const name = pathSegments.pop();
1565
+ const subsection = pathSegments.length
1566
+ ? pathSegments.join('.').toLowerCase()
1567
+ : undefined;
1568
+ const sectionPath = subsection ? section + '.' + subsection : section;
1567
1569
  const sectionIndex = this.parsedConfig.findIndex(
1568
1570
  config => config.path === sectionPath
1569
1571
  );
1570
- const [section, subsection] = sectionPath.split('.');
1571
- const name = path.split('.').pop();
1572
1572
  const newConfig = {
1573
1573
  section,
1574
1574
  subsection,
@@ -1694,8 +1694,8 @@ class GitRefManager {
1694
1694
  if (serverRef.startsWith('refs/tags') && !serverRef.endsWith('^{}')) {
1695
1695
  // Git's behavior is to only fetch tags that do not conflict with tags already present.
1696
1696
  if (!(await GitRefManager.exists({ fs, gitdir, ref: serverRef }))) {
1697
- // If there is a dereferenced an annotated tag value available, prefer that.
1698
- const oid = refs.get(serverRef + '^{}') || refs.get(serverRef);
1697
+ // Always use the object id of the tag itself, and not the peeled object id.
1698
+ const oid = refs.get(serverRef);
1699
1699
  actualRefsToWrite.set(serverRef, oid);
1700
1700
  }
1701
1701
  }
@@ -3976,7 +3976,15 @@ class GitWalkerFs {
3976
3976
  oid = await shasum(
3977
3977
  GitObject.wrap({ type: 'blob', object: await entry.content() })
3978
3978
  );
3979
- if (stage && oid === stage.oid) {
3979
+ // Update the stats in the index so we will get a "cache hit" next time
3980
+ // 1) if we can (because the oid and mode are the same)
3981
+ // 2) and only if we need to (because other stats differ)
3982
+ if (
3983
+ stage &&
3984
+ oid === stage.oid &&
3985
+ stats.mode === stage.mode &&
3986
+ compareStats(stats, stage)
3987
+ ) {
3980
3988
  index.insert({
3981
3989
  filepath: entry._fullpath,
3982
3990
  stats,
@@ -4034,7 +4042,7 @@ class GitIgnoreManager {
4034
4042
  filepath,
4035
4043
  },
4036
4044
  ];
4037
- const pieces = filepath.split('/');
4045
+ const pieces = filepath.split('/').filter(Boolean);
4038
4046
  for (let i = 1; i < pieces.length; i++) {
4039
4047
  const folder = pieces.slice(0, i).join('/');
4040
4048
  const file = pieces.slice(i).join('/');
@@ -6857,8 +6865,8 @@ function filterCapabilities(server, client) {
6857
6865
 
6858
6866
  const pkg = {
6859
6867
  name: 'isomorphic-git',
6860
- version: '1.10.1',
6861
- agent: 'git/isomorphic-git@1.10.1',
6868
+ version: '1.10.5',
6869
+ agent: 'git/isomorphic-git@1.10.5',
6862
6870
  };
6863
6871
 
6864
6872
  class FIFO {
package/index.js CHANGED
@@ -1553,16 +1553,16 @@ class GitConfig {
1553
1553
  this.parsedConfig[configIndex] = modifiedConfig;
1554
1554
  }
1555
1555
  } else {
1556
- const sectionPath = path
1557
- .split('.')
1558
- .slice(0, -1)
1559
- .join('.')
1560
- .toLowerCase();
1556
+ const pathSegments = path.split('.');
1557
+ const section = pathSegments.shift().toLowerCase();
1558
+ const name = pathSegments.pop();
1559
+ const subsection = pathSegments.length
1560
+ ? pathSegments.join('.').toLowerCase()
1561
+ : undefined;
1562
+ const sectionPath = subsection ? section + '.' + subsection : section;
1561
1563
  const sectionIndex = this.parsedConfig.findIndex(
1562
1564
  config => config.path === sectionPath
1563
1565
  );
1564
- const [section, subsection] = sectionPath.split('.');
1565
- const name = path.split('.').pop();
1566
1566
  const newConfig = {
1567
1567
  section,
1568
1568
  subsection,
@@ -1688,8 +1688,8 @@ class GitRefManager {
1688
1688
  if (serverRef.startsWith('refs/tags') && !serverRef.endsWith('^{}')) {
1689
1689
  // Git's behavior is to only fetch tags that do not conflict with tags already present.
1690
1690
  if (!(await GitRefManager.exists({ fs, gitdir, ref: serverRef }))) {
1691
- // If there is a dereferenced an annotated tag value available, prefer that.
1692
- const oid = refs.get(serverRef + '^{}') || refs.get(serverRef);
1691
+ // Always use the object id of the tag itself, and not the peeled object id.
1692
+ const oid = refs.get(serverRef);
1693
1693
  actualRefsToWrite.set(serverRef, oid);
1694
1694
  }
1695
1695
  }
@@ -3970,7 +3970,15 @@ class GitWalkerFs {
3970
3970
  oid = await shasum(
3971
3971
  GitObject.wrap({ type: 'blob', object: await entry.content() })
3972
3972
  );
3973
- if (stage && oid === stage.oid) {
3973
+ // Update the stats in the index so we will get a "cache hit" next time
3974
+ // 1) if we can (because the oid and mode are the same)
3975
+ // 2) and only if we need to (because other stats differ)
3976
+ if (
3977
+ stage &&
3978
+ oid === stage.oid &&
3979
+ stats.mode === stage.mode &&
3980
+ compareStats(stats, stage)
3981
+ ) {
3974
3982
  index.insert({
3975
3983
  filepath: entry._fullpath,
3976
3984
  stats,
@@ -4028,7 +4036,7 @@ class GitIgnoreManager {
4028
4036
  filepath,
4029
4037
  },
4030
4038
  ];
4031
- const pieces = filepath.split('/');
4039
+ const pieces = filepath.split('/').filter(Boolean);
4032
4040
  for (let i = 1; i < pieces.length; i++) {
4033
4041
  const folder = pieces.slice(0, i).join('/');
4034
4042
  const file = pieces.slice(i).join('/');
@@ -6851,8 +6859,8 @@ function filterCapabilities(server, client) {
6851
6859
 
6852
6860
  const pkg = {
6853
6861
  name: 'isomorphic-git',
6854
- version: '1.10.1',
6855
- agent: 'git/isomorphic-git@1.10.1',
6862
+ version: '1.10.5',
6863
+ agent: 'git/isomorphic-git@1.10.5',
6856
6864
  };
6857
6865
 
6858
6866
  class FIFO {