Skip to content

Commit 05cccb5

Browse files
authored
Update Azure Repos link format (#4598)
* fix(giturl): correct Azure Repos link format to use query parameters * lineEnd should not be same as line * update azure repos link engine test
1 parent bf930a2 commit 05cccb5

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

pkg/engine/engine_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ func TestSetLink(t *testing.T) {
889889
},
890890
link: "https://dev.azure.com/example",
891891
line: 3,
892-
wantLink: "https://dev.azure.com/example?line=3",
892+
wantLink: "https://dev.azure.com/example?line=3&lineEnd=4&lineStartColumn=1",
893893
},
894894
{
895895
name: "Unsupported metadata type",

pkg/giturl/giturl.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,16 @@ func GenerateLink(repo, commit, file string, line int64) string {
130130
return repo[:len(repo)-4] + "/commits/" + commit
131131

132132
case providerAzure:
133-
baseLink := repo + "/commit/" + commit + "/" + file
133+
// Azure Repos format: ?path=/file&version=GC<commit>&line=N&lineEnd=N+1&lineStartColumn=1
134+
// where GC prefix stands for "Git Commit" (vs GB for Git Branch, GT for Git Tag)
135+
baseLink := repo + "?version=GC" + commit
136+
if file != "" {
137+
baseLink = repo + "?path=/" + file + "&version=GC" + commit
138+
}
134139
if line > 0 {
135-
baseLink += "?line=" + strconv.FormatInt(line, 10)
140+
lineStr := strconv.FormatInt(line, 10)
141+
lineEndStr := strconv.FormatInt(line+1, 10)
142+
baseLink += "&line=" + lineStr + "&lineEnd=" + lineEndStr + "&lineStartColumn=1"
136143
}
137144
return baseLink
138145

@@ -211,9 +218,13 @@ func UpdateLinkLineNumber(ctx context.Context, link string, newLine int64) strin
211218
return link
212219

213220
case providerAzure:
214-
// For Azure, line numbers are appended as ?line=<number>.
221+
// For Azure, line numbers use query parameters: ?line=N&lineEnd=N+1&lineStartColumn=1
215222
query := parsedURL.Query()
216-
query.Set("line", strconv.FormatInt(newLine, 10))
223+
lineStr := strconv.FormatInt(newLine, 10)
224+
lineEndStr := strconv.FormatInt(newLine+1, 10)
225+
query.Set("line", lineStr)
226+
query.Set("lineEnd", lineEndStr)
227+
query.Set("lineStartColumn", "1")
217228
parsedURL.RawQuery = query.Encode()
218229

219230
case providerGithub, providerGitlab:

pkg/giturl/giturl_test.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ func TestGenerateLink(t *testing.T) {
150150
commit: "abcdef",
151151
file: "main.go",
152152
},
153-
want: "https://dev.azure.com/org/project/_git/repo/commit/abcdef/main.go",
153+
want: "https://dev.azure.com/org/project/_git/repo?path=/main.go&version=GCabcdef",
154154
},
155155
{
156156
name: "Azure link gen with line",
@@ -160,7 +160,16 @@ func TestGenerateLink(t *testing.T) {
160160
file: "main.go",
161161
line: int64(20),
162162
},
163-
want: "https://dev.azure.com/org/project/_git/repo/commit/abcdef/main.go?line=20",
163+
want: "https://dev.azure.com/org/project/_git/repo?path=/main.go&version=GCabcdef&line=20&lineEnd=21&lineStartColumn=1",
164+
},
165+
{
166+
name: "Azure link gen - no file",
167+
args: args{
168+
repo: "https://dev.azure.com/org/project/_git/repo",
169+
commit: "abcdef",
170+
file: "",
171+
},
172+
want: "https://dev.azure.com/org/project/_git/repo?version=GCabcdef",
164173
},
165174
{
166175
name: "Unknown provider on-prem instance",
@@ -279,10 +288,10 @@ func TestUpdateLinkLineNumber(t *testing.T) {
279288
{
280289
name: "Update Azure link with line",
281290
args: args{
282-
link: "https://dev.azure.com/org/project/_git/repo/commit/abcdef/main.go?line=20",
291+
link: "https://dev.azure.com/org/project/_git/repo?path=/main.go&version=GCabcdef&line=20&lineEnd=21&lineStartColumn=1",
283292
newLine: int64(40),
284293
},
285-
want: "https://dev.azure.com/org/project/_git/repo/commit/abcdef/main.go?line=40",
294+
want: "https://dev.azure.com/org/project/_git/repo?line=40&lineEnd=41&lineStartColumn=1&path=%2Fmain.go&version=GCabcdef",
286295
},
287296
{
288297
name: "Add line to github link without line",

0 commit comments

Comments
 (0)