dotnet / dotnet/sourcelink

When the "origin" remote points to a local directory that itself doesn't have an "origin" remote, SourceLink emits warning/error even though it has a fallback

Open
#629 7 comments 1 reaction 0 assignees View on GitHub
Dominant language
C#
Stars
1.4k
Forks
148
PR merge metrics
No merged PRs in 30d

Description

The scenario is that I want to run a build on an isolated, clean new source tree, without throwing away work with `git clean` on my dev repo. Thanks to git, `git clone . ` is inexpensive. But sourcelink makes the build fail if I don't have an `origin` remote on my dev repo.

This warning is a problem because there's a strong standard in arcade-powered repos to have warning-as-error turned on.

I think that not having an `origin` is considered valid as a sourcelink scenario, based on https://github.com/dotnet/arcade/issues/3236.

(For this specific scenario, a worktree might work better. However, in some cases it's not good to have to manage `.git/worktrees/*` in the originating repo, and there are still some Git versions on our build machines that doesn't support `worktree`. This is related to a source-build scenario I can get into more if desired, but that seems off topic for now.)

---

Here's how to repro (f225c7a5 at the time):

```
git clone https://github.com/dotnet/sourcelink dev
git clone dev isolated
( cd dev; git remote rename origin dotnet )
( cd isolated; ./build.sh /bl )
```

Here's the warning (as error): (`RepositoryDoesNotHaveSpecifiedRemote`)

> /work/.rhelhome/.nuget/packages/microsoft.build.tasks.git/1.1.0-beta-20206-02/build/Microsoft.Build.Tasks.Git.targets(24,5):
> **error : Repository '/work/dev' does not have the specified remote 'origin'; using 'dotnet' instead.**
> [/work/isolated/src/Microsoft.Build.Tasks.Git.UnitTests/Microsoft.Build.Tasks.Git.UnitTests.csproj]

```
Microsoft.Build.Tasks.Git.LocateRepository
Assembly = /work/.rhelhome/.nuget/packages/microsoft.build.tasks.git/1.1.0-beta-20206-02/build/../tools/netcoreapp2.0/Microsoft.Build.Tasks.Git.dll
Parameters
Path = /work/isolated/src/Microsoft.Build.Tasks.Git.UnitTests
SourceLink: Reusing cached git repository information.
Errors
/work/.rhelhome/.nuget/packages/microsoft.build.tasks.git/1.1.0-beta-20206-02/build/Microsoft.Build.Tasks.Git.targets(24,5): Repository '/work/dev' does not have the specified remote 'origin'; using 'dotnet' instead. [/work/isolated/src/Microsoft.Build.Tasks.Git.UnitTests/Microsoft.Build.Tasks.Git.UnitTests.csproj]
/work/.rhelhome/.nuget/packages/microsoft.build.tasks.git/1.1.0-beta-20206-02/build/Microsoft.Build.Tasks.Git.targets(24,5): Repository '/work/dev' does not have the specified remote 'origin'; using 'dotnet' instead. [/work/isolated/src/Microsoft.Build.Tasks.Git.UnitTests/Microsoft.Build.Tasks.Git.UnitTests.csproj]
OutputProperties
_GitRepositoryId = /work/isolated/.git
ScmRepositoryUrl = https://github.com/dotnet/sourcelink
SourceRevisionId = f225c7a58fb63c232505622642ad69c5b32523e2
OutputItems
SourceRoot
/work/isolated/
RevisionId = f225c7a58fb63c232505622642ad69c5b32523e2
ScmRepositoryUrl = https://github.com/dotnet/sourcelink
SourceControl = git
```

Binlog: [sourcelink-no-origin-local.zip](https://github.com/dotnet/sourcelink/files/4914836/sourcelink-no-origin-local.zip)

Workaround: disable sourcelink when building this way. (`/p:EnableSourceControlManagerQueries=false /p:EnableSourceLink=false`)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.