Skip to content

Conversation

@leander-dsouza
Copy link
Collaborator

@leander-dsouza leander-dsouza commented Aug 27, 2025

Note

Please refer #751 for verifying integration with bloom.

Basic Info

Info Please fill out this column
Ticket(s) this addresses N/A
Primary OS tested on Ubuntu
Is this a breaking change? No
Does this PR contain AI generated software? No

Description of contribution in a few bullet points

  • This ports over four main functions from vcstools, namely export_repositories , checkout, get_vcs_client, and get_path for all the VCS clients.

  • This is because these are the four prominent methods used in bloom as seen here.

  • In addition, the corresponding integration tests have been added to both of these functions across svn, bzr, hg, and git clients.

  • Breezy has been added to the CI for testing on macOS and Ubuntu.

  • The integration can be safely verified in #751 at bloom. All the system and unit tests pass upon merge.

Description of how this change was tested

  • Ran pytest locally to ensure all the unit and linting tests pass:

    pytest -s -v test

Signed-off-by: Leander Stephen Desouza [email protected]

@leander-dsouza leander-dsouza force-pushed the leander-dsouza/vcstools-port branch 4 times, most recently from 5730d2c to 650fcd3 Compare August 27, 2025 13:58
@leander-dsouza leander-dsouza force-pushed the leander-dsouza/fix-svn-test branch from 659c3b8 to 5f6ce04 Compare August 27, 2025 14:09
@leander-dsouza leander-dsouza force-pushed the leander-dsouza/vcstools-port branch 4 times, most recently from 477c4be to d08697b Compare August 27, 2025 14:37
@leander-dsouza leander-dsouza marked this pull request as ready for review August 27, 2025 14:39
@leander-dsouza leander-dsouza requested a review from claraberendsen as a August 27, 2025 14:39
@leander-dsouza leander-dsouza force-pushed the leander-dsouza/fix-svn-test branch from 5f6ce04 to e47aac4 Compare August 27, 2025 15:08
Base automatically changed from leander-dsouza/fix-svn-test to main August 27, 2025 18:52
@leander-dsouza leander-dsouza force-pushed the leander-dsouza/vcstools-port branch 2 times, most recently from 8e32c1a to 138ad9f Compare August 28, 2025 12:45
@claraberendsen claraberendsen added the enhancement New feature or request label Sep 9, 2025
@leander-dsouza leander-dsouza force-pushed the leander-dsouza/vcstools-port branch from 138ad9f to 83040dc Compare September 16, 2025 10:36
@leander-dsouza leander-dsouza marked this pull request as draft September 16, 2025 11:26
@leander-dsouza leander-dsouza marked this pull request as ready for review September 16, 2025 12:29
@leander-dsouza leander-dsouza changed the title Port Vcstools Migrate subsection of vcstools' API for compatibility with bloom Sep 16, 2025
@codecov-commenter
Copy link

codecov-commenter commented Oct 1, 2025

Codecov Report

❌ Patch coverage is 37.50000% with 145 lines in your changes missing coverage. Please review.
✅ Project coverage is 28.13%. Comparing base (75727e7) to head (5b27149).

Files with missing lines Patch % Lines
vcs2l/clients/svn.py 9.83% 55 Missing ⚠️
vcs2l/clients/bzr.py 5.71% 33 Missing ⚠️
vcs2l/clients/git.py 51.61% 23 Missing and 7 partials ⚠️
vcs2l/clients/hg.py 65.95% 10 Missing and 6 partials ⚠️
vcs2l/clients/__init__.py 63.63% 4 Missing ⚠️
vcs2l/clients/vcs_base.py 50.00% 3 Missing ⚠️
vcs2l/clients/tar.py 60.00% 2 Missing ⚠️
vcs2l/clients/zip.py 60.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #43      +/-   ##
==========================================
+ Coverage   26.98%   28.13%   +1.14%     
==========================================
  Files          31       31              
  Lines        2238     2463     +225     
  Branches      392      436      +44     
==========================================
+ Hits          604      693      +89     
- Misses       1574     1698     +124     
- Partials       60       72      +12     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@SuperJappie08
Copy link

@leander-dsouza, I noticed that some implementations of export_repository are prefixed with an underscore (_export_repository), is this intentional?

nuclearsandwich
nuclearsandwich previously approved these changes Oct 3, 2025
Copy link
Collaborator

@nuclearsandwich nuclearsandwich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks good but for the one comment about the git client which I believe can be simplified dramatically.


# If current version matches export version and no local changes, export directly
current_sha = self._get_current_version()
export_sha = self._get_version_sha(version) if version else current_sha
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we have an exact version to provide as a commit-ish->tree-ish what is the requirement to use a temp directory. git-archive does not make any changes to the working directory. I have not gone spelunking in the history but I'm willing to hypothesize that this behavior is carried over from a vcs which does not support exporting archives of snapshots without checking them out first.

git archive --format=tar.gz --output={filepath} export_sha

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you are correct, Steven.
I tried to replicate the archiving behaviour of the original implementation of the archiving process in vcstools

I have now simplified the implementation of this section, as git archive does not change the cwd.

result['output'] = branch
return result

def _export_repository(self, version, basepath):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A handful of these are named _export_repository instead of export_repository. to match the API. Is that intentional?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I briefly remember selectively naming the export methods for this reason.
However, I cannot find these methods in the vcstools repository. Hence, I added a commit to standardise the export repository methods across all VCS clients.

Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
@leander-dsouza
Copy link
Collaborator Author

@leander-dsouza, I noticed that some implementations of export_repository are prefixed with an underscore (_export_repository), is this intentional?

I remember drafting the export methods to match the vcstools repository. However, I think I was mistaken, and hence I added a commit to standardise all the export repository methods across all VCS clients.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants