Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Introduced a service that determines the VCS to use to locate matches for a particular component selector, to allow this logic to be reused by the things that need this information rather than duplicating it in several places, and to decouple these consumers from the details of how the decision is made.

    • -0
    • +82
    ./org/gradle/vcs/internal/DefaultVcsMappingStoreTest.groovy
  1. … 10 more files in changeset.
Changed source dependency resolution to map `latest.integration` to the `master` branch rather than the target Git repo's HEAD.

  1. … 7 more files in changeset.
Fix unit tests

  1. … 4 more files in changeset.
Added a `GitHttpRepository` fixture, which allows test to make assertion about the interactions with the Git server. This is important for performance reasons. Changed a test class to use this instead of a file repo.

  1. … 14 more files in changeset.
Changed source dependency resolution to match only tags, rather than all references such as branches, when selecting a version.

This removes the accidental support for declaring a dependency on a branch, pending an actual implementation.

  1. … 3 more files in changeset.
Added some support for dynamic version selectors to source dependency resolution.

This change duplicates the logic that implements the same feature for binary dependencies. This duplicate implementation is incomplete and behaves differently to the implementation for binary dependencies. This is intended to be a place holder and a later change will move the source dependency resolver to a location where both source and binary dependency resolution can share the same implementation of the selection logic (plus a bunch of other missing capabilities).

  1. … 8 more files in changeset.
Moved a couple of version control interfaces out of the public API and into internal API. These were not reachable from any other public API and we're not planning to make the VCS integration extensible at this point (certainly something we want to do in the future I think, once source dependencies work well with Git).

  1. … 11 more files in changeset.
Add coverage for recursive submodules in source dependencies

  1. … 3 more files in changeset.
Add support for cloning/updating submodules in source dependencies

  1. … 3 more files in changeset.
Fix @Rule clean-up ordering

Simplify uses of GitRepository.commit()

The different File-taking overloads weren't that useful. You almost

always want to commit everything.

  1. … 1 more file in changeset.
Simplify uses of GitRepository.commit()

The different File-taking overloads weren't that useful. You almost

always want to commit everything.

  1. … 8 more files in changeset.
Add coverage for checking out Git repos with submodules

  1. … 2 more files in changeset.
Fix the GitVersionControlSystemSpec

Another change added the `latest.integration` version to the version

map, so this test needed to change as well.

Part of gradle/gradle-native#185

Update test

The error messages were changed in the previous commit.

Part of gradle/gradle-native#213

Change to an invalid address

This makes it more clear that we are not hoping to find a real

repository at the URL in question.

Part of gradle/gradle-native#213

Add a test for non-repo error message

Fixes #213

  1. … 1 more file in changeset.
Revert "Remove jgit as a dependency for now"

This reverts commit 44153103683c94bd30d0ace6f7aa9584b40e5149.

  1. … 6 more files in changeset.
Remove jgit as a dependency for now

  1. … 6 more files in changeset.
Include simple test with locking

This is not sufficient to prove that pulling multiple

`VersionControlSpec`s in parallel to the same directory will be

safe. We still need to add some more sophisticated testing fixtures to

prove that.

This change also switches who has the responsibility for making the

"uniqueId()" for the `VersionControlSpec` globally unique. The

previous implementation wouldn't work given that the

`VersionControlSystem` would always be a

`ThreadSafeVersionControlSystem` no matter what the delegate

`VersionControlSystem` would be.

Part of gradle/gradle-native#146

  1. … 9 more files in changeset.
Refactor populate to return working directory

In an attempt to implement locking of the git clone directory in

gradle/gradle-native#146, we realized that the directory locking

mechanism writes a lock file into the directory being locked. That

lock file prevents jGit from cloning into the directory because it

expects directories to be empty when they are the target of a clone

operation.

This change moves the responsibility for calculating the path to the

working directory into the VersionControlSystem and provides the

populate method with a parent directory which can be the target of

locking.

Part of gradle/gradle-native#146

  1. … 6 more files in changeset.
GitVersionControlSystem.uniqueId return a string representing the git URL instead of a hash

  1. … 1 more file in changeset.
Switch getUniquePath() to getUniqueId()

We cannot use the `Path` type as it is considered an `internal`

type.

Part of gradle/gradle-native#87

  1. … 3 more files in changeset.
Address review feedback

  1. … 10 more files in changeset.
Add a GitVersionRef and implement getAvailableVersions

This should provide everything needed to make progress on

gradle/gradle-native#87

Part of gradle/gradle-native#88

  1. … 3 more files in changeset.
Add tests and fix DefaultGitVersionControlSpec

There were a few cases which weren't being handled correctly:

* We had too many slashes in our `repositoryId`s

* We were not extracting the repo name if the repo eneded in `.git`

Part of gradle/gradle-native#88

  1. … 1 more file in changeset.
Split GitVersionControlSpec into interface and implementation

It is just healthy to keep these separate.

Part of gradle/gradle-native#88

  1. … 5 more files in changeset.
Add version ref to Vcs populate

  1. … 14 more files in changeset.
Handle repository workingDir with other remote

Before this change, it the URL from the GitVersionConrolSpec might not

have matched the remote of the workingDir repository, and a pull

command would have been executed. But, the caller's intent would not

have been followed.

  1. … 1 more file in changeset.
Test and cover some more cases

Specifically:

* Can clone into an empty working directory that already exists.

* Cannot populate a non-reposioty working directory with a file in it.

* Cannot populate a non-reposioty working directory, even with a

`.git` subdirectory.

Fixes gradle/gradle-native#107

  1. … 1 more file in changeset.