Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Omit ports in constructed URL #383

Merged
merged 4 commits into from
Apr 12, 2021
Merged

Omit ports in constructed URL #383

merged 4 commits into from
Apr 12, 2021

Conversation

alexanderchiu
Copy link
Contributor

@alexanderchiu alexanderchiu commented Feb 20, 2021

Hi!

Firstly want to say thanks to all the maintainers for this project. I was very excited when I came across it.

I ran into the same issue as described in #193 and I saw the stagnant related PR #259.

I thought I would add some tests ( as requested), and added a fix for the omitting ports in constructed URLs with fewer regex changes.

I don't write much JS so any style based feedback would be much appreciated!

@alexanderchiu alexanderchiu changed the title Alex/gh 193 Omit ports in constructed URL Feb 20, 2021
Base automatically changed from master to main February 24, 2021 17:03
@salemhilal
Copy link
Contributor

Hey, thank you for this PR (especially for the master -> main rename in the tests). We are prepping a minor version release at the moment, but once that's settled we can give this some more attention.

@alexanderchiu
Copy link
Contributor Author

Sounds good - thanks @salemhilal!

const line = null
const rev = "main"
expect(UrlToRepo(repo, path, line, rev)).toBe(
"//bitbucket.org/YourOrganization/RepoOne/src/main/test.txt"
Copy link
Contributor

Choose a reason for hiding this comment

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

Should this repo URL contain the port? i.e. would we expect this to be "//bitbucket.org:7999/YourOrganization/RepoOne/src/main/test.txt" in all cases?

Copy link
Contributor Author

@alexanderchiu alexanderchiu Mar 3, 2021

Choose a reason for hiding this comment

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

Thanks for the reviewing this.

My actual goal is to get Hound working with BitBucket Server. From https://confluence.atlassian.com/bitbucketserver074/enabling-ssh-access-to-git-repositories-in-bitbucket-server-1019386434.html#EnablingSSHaccesstoGitrepositoriesinBitbucketServer-SSHbaseURL

Resulting SSH URL for a repo: ssh://[email protected]:7999/<projectname>/<reponame>.git
Bitbucket Server base URL: https://bitbucket.atlassian.com

In this case the port is required in the config.json when specifying the ssh url, but the port needs to be dropped when resolving the url when clicking through to a file after search.

I guess the best approach would be to allow specifying a {port} in base-url to allow the user to pick whether they want the port or not.

As an aside, I thought this was the only change needed to get it working with BitBucket Server, but after finally getting around to building and running my branch I've noticed that the required URL is in the form:

https://bitbucket.atlassian.com/projects/<projectname>/repos/<reponame>/browse 

which would require further additions to the UrlToRepo method. This diversion may not be what you want, so won't open a PR unless you think it's worthwhile.

Copy link
Contributor

Choose a reason for hiding this comment

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

Sorry for the late response here! I think that if the port is dropped to support bitbucket URLs, but bitbucket URLs are themselves also kinda weirdly formatted, it might be better to leave the port in by default, and then to make a special exemption for bitbucket / atlassian-hosted repositories. Does that work for you? I'd also be open to a PR to handle Bitbucket URLs, either as part of this PR or in a separate one.

Copy link
Contributor Author

@alexanderchiu alexanderchiu Apr 1, 2021

Choose a reason for hiding this comment

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

No stress. Thanks for getting back to me.

leave the port in by default, and then to make a special exemption for bitbucket / atlassian-hosted repositories.

Sounds good to me.

I'd also be open to a PR to handle Bitbucket URLs, either as part of this PR or in a separate one.

Ok cool thanks - I'm not really sure where the best place to add that logic would be. I'll update this PR so that the ports are not ommited, and then you can add the exemption for on prem bitbucket repositories (or give me some guidance on what you have in mind and I can do it).

Copy link
Contributor

Choose a reason for hiding this comment

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

For sure. I think in that function itself, there's already some edge cases being handled (like this one for Github wikis. I wouldn't be mad at exceptional handling of some sort for Bitbucket in there as well. If that method gets too unruly, it shouldn't be too difficult to refactor later, too.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added full support for the Bitbucket server style repos by adding expansion vars. Tested it against our deployed bitbucket and click through to source is working now. Everything else should have remained backwards compatible.

Copy link
Contributor

@salemhilal salemhilal left a comment

Choose a reason for hiding this comment

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

I have one implementation-specific question (I'm not totally familiar with how we would expect ports to be used here), but otherwise this PR looks good to me! Thank you for contributing this fix.

- Include port in url var expansion
- Add hostname/port/project/repo expansion variables

See GH-193
@Crocmagnon
Copy link

Hi there 👋🏻
I'm seeing mentions of bitbucket, will this fix work for gitlab for example ?

Our clone urls look something like this:

ssh://[email protected]:4222/group/project.git

The urls generated by hound on the search results look like this:

https://git.example.com/4222/group/project/blob/master/folder/file.extension

We expect the /4222 to be removed.

@salemhilal
Copy link
Contributor

Hey @Crocmagnon, this PR is exactly about that problem (see this issue for more). I haven't had a chance to put fresh eyes on this PR, but I'd like to do that shortly (life's crazy, etc.)

@alexanderchiu
Copy link
Contributor Author

I tested locally with the proposed changes and the following passes:

  test("gitlab", () => {
      const repo = {
          url: "ssh://[email protected]:4222/group/project.git",
          "url-pattern":
          {
              "base-url" : "{hostname}/{project}/{repo}/blob/{rev}/{path}{anchor}",
              "anchor" : "#{line}",
          }
      };
      const path = "folder/file.extension"
      const line = null
      const rev = "master"
      expect(UrlToRepo(repo, path, line, rev)).toBe(
          "//git.example.com/group/project/blob/master/folder/file.extension"
      );
  });

@salemhilal
Copy link
Contributor

@alexanderchiu if you want to toss that test into this PR that works for me. Otherwise, this looks good to merge!

@alexanderchiu
Copy link
Contributor Author

That functionality is already covered by an existing test so it's probably not necessary. I think you can merge when convenient. Thanks for the reviews @salemhilal!

@salemhilal salemhilal merged commit 60b8104 into hound-search:main Apr 12, 2021
@salemhilal
Copy link
Contributor

Thank you for this PR (and your patience) @alexanderchiu!

AlexFielder added a commit to AlexFielder/hound that referenced this pull request Jul 28, 2021
* Update config-example.json

* Add CONTRIBUTING.md file

* Dockerfile should use github.com/hound-search

This fixing the docker build issue.

* make listen URL clickable in iTerm (hound-search#340)

* Add Jest tests and Prettier support (hound-search#343)

This commit adds support for Jest and writes a few simple tests as
proof. Adding a test is as easy as adding a file that ends in
`.test.js` next to the file you want to test. Any file that matches that
pattern should have access to Jest functions. The whole test suite can
be run with `npm run test`.

I also added support for Prettier. Running `npm run format`
should run Prettier on any staged changes. I thought about adding Husky
to automatically run Prettier as a pre-commit hook, but it seems as
though Husky requires git v2.13 which would require me upgrading Git.

I didn't add support for ESLint yet since I figured that may be a
slightly more involved conversation — Prettier seems to be generally
uncontroverical and is generally only slightly configurable, whereas
ESlint is highly configurable and behaves however we want it to.

* Git VCS driver: Support non-default target refs (hound-search#345)

Currently, only the default ref (`master`) is supported.

- Allow target non-default target refs to be specified via configs.
- Add config-driven target ref auto-detection using the `HEAD` branch.
- Update default repo base URL pattern to link to the content revision,
  accounting for potential non-default target ref usage.
- Add global-level VCS configs which are merged into the repo-level configs
  during startup (repo-level vals take precedence).

* Exclude file path (hound-search#347)

* index: add a search option to exclude files given a regexp

* api: add the excludeFiles query parameter

Set the index search options ExcludeFileRegexp with this parameter
to allow excluding files from the search via a regexp.

* js: add the excludeFiles search parameter

* css: increase the label width to fit 'Exclude file path'

* js: correctly check that advanced is empty

* Update README with contact info for maintainers. (hound-search#348)

I don't think there's a clear way to see who has push privs to this repo from the public, and even if there is, the "Get In Touch" section should probably list the maintainers.

* incorporate detailing around gopath in README's quick start instructions (hound-search#352)

Co-authored-by: Rebecca Lau <[email protected]>

* pin alpine version to make the docker pass

* Update Dockerfile

* More detailed setup documents with less assumptions on users (hound-search#359)

This commit updates the readme to be a little more verbose for people who don't necessarily have Go or Docker set up, but who want to contribute nonetheless. 

* Apply the old patch

* add  some figures

* remove the idea code

* get it untitled

* remove

* add .idea dev tools

* remove simple config

* get config back

* detailing tests and simplifying the setup

* Commit TLS support guide

Co-authored-by: Salem <[email protected]>

* make the statement terser

* delete unused img

* rewording

* back to the old path

* Update README.md

* Update README.md

* Update README.md

* Update README.md

Co-authored-by: Salem <[email protected]>

* Initialize Go Modules

`go mod init github.com/hound-search/hound`

* Replace jteeuwen/go-bindata with go-bindata/go-bindata

The former package is unmainatained since a while and the replacement
also fixes this bug I encountered when trying to build the package:
jteeuwen/discussions#6

* update Go version requirement in README file

* Add a -version flag to Houndd (hound-search#362)

This commit adds a `-version` flag to houndd. Running `houndd -version` prints the current version and exits.

Co-authored-by: Kartikay Shandil <[email protected]>

* Add padding between advanced mode text inputs

* add margin bottom to fields that are not last

* update front end bundles

Co-authored-by: Blobb Ered <@blobbered>

* Setup Github Actions CI (hound-search#354)

* Setup Github Actions CI

Replaces Travis CI with Github Actions for better integration.
Jobs are run against more recent Go versions, namely 1.12 to 1.14 .
 .
For further documentation see

- https://github.com/actions/setup-go
- and https://help.github.com/en/actions

This adds `-race` flag to the Go tests and will run a meta linter
(golangci-lint).

* keep travis in until github workflows is tested

* tidy go mods

* remove lint command from github workflow

* add back go-bindata to go modules list

* up version of actions checkout to fix deprecation errors

* return go bindata to the go.sum file as well

Co-authored-by: Andreas Linz <[email protected]>

* Add a github actions badge

Thanks again @klingtnet and @blobbered for making this possible!

* Update README.md (hound-search#369)

Add clarification of using file:// protocol for accessing locally pulled repos

* Added new folder docs with config-options description on options. (hound-search#370)

* Added new folder docs with config-options description on options.

* Peer review comment update
updated formatting for config options documentation and added link
in readme.

* readme link update

* link update

* Minor edits from code review

Co-authored-by: kayyapil <[email protected]>
Co-authored-by: ehrktia <[email protected]>
Co-authored-by: Salem <[email protected]>

* Test windows

* Run Go build and test on Ubuntu Linux and Windows

* Add lint

* Install dependencies in Dockerfile

* Fix typo

* Adding a tip for windows users (hound-search#379)

* Adding a tip for windows users

* Update README.md

Co-authored-by: Salem <[email protected]>

Co-authored-by: Salem <[email protected]>

* Use tini as default entry point (hound-search#376)

* Add a warning for the default branch rename (hound-search#380)

* Add a warning for the default branch rename

* Add a link to Github's renaming documentation.

* Update README to reflect branch rename. (hound-search#384)

* Update version in main.go

* support github webhook

* Omit ports in constructed URL (hound-search#383)

* Improve accessibility (hound-search#398)

* Resolve WCAG2AA.Principle3.Guideline3_1.3_1_1.H57.2

* Resolve WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputText.Name

* Resolve WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.Button.Name

* Improve stats contrast

* Improve advanced text contrast

* Improve repo title contrast

* Improve contrast in advanced section

* Improve line number contrast

* Improve excluded files contrast

* Improve "load all" button contrast

* Automatically build docker image and publish to ghcr.io (hound-search#401)

* Feat: Use goreleaser

* Feat: Add docker build, remove goreleaser

* Fix: Add image name

* Feat: Use ghcr.io and build-push-action@2

* We try again

* Trying yet again

* Fix: Use actor and GITHUB_TOKEN

* Fix: Use github.actor in image tag path

* Fix: use github.repository_owner instead of github.actor

When you have an organisation, github.actor != github.repository_owner

Co-authored-by: Jone Marius Vignes <[email protected]>

* Update default-config.json (hound-search#391)

* Update default-config.json

* Update default-config.json (ref: main)

* Add hyperlinks to repository root (hound-search#396)

* Add literal search option (hound-search#397)

* Add literal search option

* Pull EscapeRegExp into common.js

* Add db/ to Jest ignore patterns

* Test EscapeRegExp() matches its input

* Test vacuous EscapeRegExp

* Give repo links a target of blank (hound-search#404)

Add rel="noopener noreferrer" to _blank links

Co-authored-by: Joseph Price <[email protected]>
Co-authored-by: dschott <[email protected]>
Co-authored-by: Nicolas R <[email protected]>
Co-authored-by: Igor <[email protected]>
Co-authored-by: Salem <[email protected]>
Co-authored-by: Richard Liang <[email protected]>
Co-authored-by: Vincent Rischmann <[email protected]>
Co-authored-by: Blobb Ered <[email protected]>
Co-authored-by: Rebecca Lau <[email protected]>
Co-authored-by: Ruixi Fan <[email protected]>
Co-authored-by: Ruixi Fan <[email protected]>
Co-authored-by: Andreas Linz <[email protected]>
Co-authored-by: Rebecca Lau <[email protected]>
Co-authored-by: Kartikay Shandil <[email protected]>
Co-authored-by: Kartikay Shandil <[email protected]>
Co-authored-by: Ashley Roach <[email protected]>
Co-authored-by: karthick <[email protected]>
Co-authored-by: kayyapil <[email protected]>
Co-authored-by: ehrktia <[email protected]>
Co-authored-by: David Kolossa <[email protected]>
Co-authored-by: Sandro <[email protected]>
Co-authored-by: Andrew Stanton <[email protected]>
Co-authored-by: David Schott <[email protected]>
Co-authored-by: Cor Bosman <[email protected]>
Co-authored-by: Jacob Rose <[email protected]>
Co-authored-by: Alexander Chiu <[email protected]>
Co-authored-by: Joel Armstrong <[email protected]>
Co-authored-by: Jone Marius Vignes <[email protected]>
Co-authored-by: Jone Marius Vignes <[email protected]>
Co-authored-by: Simon Legner <[email protected]>
Co-authored-by: Bucky Schwarz <[email protected]>
rwtnorton added a commit to EasyPost/hound that referenced this pull request Dec 2, 2024
Summary:
Merge pull request hound-search#387 from corbosman/main

Adds support for Github webhooks, so that committing to a repository sends a webhook request to hound, which then re-indexes the repository. Per contributor @corbosman, this enabled his org to use Hound with thousands of repos and keep indexes fresh.

Omit ports in constructed URL (hound-search#383)

Improve accessibility (hound-search#398)

* Resolve WCAG2AA.Principle3.Guideline3_1.3_1_1.H57.2

* Resolve WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputText.Name

* Resolve WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.Button.Name

* Improve stats contrast

* Improve advanced text contrast

* Improve repo title contrast

* Improve contrast in advanced section

* Improve line number contrast

* Improve excluded files contrast

* Improve "load all" button contrast

Automatically build docker image and publish to ghcr.io (hound-search#401)

* Feat: Use goreleaser

* Feat: Add docker build, remove goreleaser

* Fix: Add image name

* Feat: Use ghcr.io and build-push-action@2

* We try again

* Trying yet again

* Fix: Use actor and GITHUB_TOKEN

* Fix: Use github.actor in image tag path

* Fix: use github.repository_owner instead of github.actor

When you have an organisation, github.actor != github.repository_owner

Co-authored-by: Jone Marius Vignes <[email protected]>

Update default-config.json (hound-search#391)

* Update default-config.json

* Update default-config.json (ref: main)

Add hyperlinks to repository root (hound-search#396)

Add literal search option (hound-search#397)

* Add literal search option

* Pull EscapeRegExp into common.js

* Add db/ to Jest ignore patterns

* Test EscapeRegExp() matches its input

* Test vacuous EscapeRegExp

Give repo links a target of blank (hound-search#404)

Add rel="noopener noreferrer" to _blank links

Adding pull request template

Update README to use ghcr.io

Currently, the README suggests running an outdated version of hound. There's been a lot of good work done in the past [3 years](https://hub.docker.com/r/etsy/hound/tags).

The container registry was updated in hound-search#401

Add latest tag

Fix typo

Remove default branch warning

It's been almost a year since we renamed the default branch to `main`. The warning can probably be taken out.

ui: collapse and expand files Fixes hound-search#182

Fix the linter, update golang versions. (hound-search#422)

* golangci to v3 per https://stackoverflow.com/questions/71758856/github-action-for-golangci-lint-fails-with-cant-load-fmt

* add with latest

* add setup-go and specific version

* update version

* Use only one actions/checkout, previous version of go linter

The linter (`golangci`) and the action that runs the linter (`golangci/golangci-lint-action`) are separate. The linter seems to be running but finding new errors, so this change might be enough to temporarily squash those.

* Drop go 1.12 and 1.13,  add 1.17 and 1.18

There's a new golang version every 6 months. The latest two golang versions are supported officially. I'm keeping 1.14 around for now since it was previously the latest supported version.

* Only run linter on 1.17

The 1.18 linter has import issues that we'll investigate later.

* update version

* nolint

* nolint

* nolint

* nolint

* update lint to go 1.18

Co-authored-by: David Schott <[email protected]>

chore: Bump version const

Otherwise, `houndd -version` spits out the wrong version.
Anticipating the patch release that this commit will go out with.

Add config.json to .gitignore

Add .dockerignore

Adding the setup-qemu-action to enable multiplatform docker builds from github actions

Attempt auto-generated files

Add badge

refactor to use filenames and no regex

add config override

add some docs

add config test

Update version for release

Update Makefile to reflect the move to a go module.

Convert Signal to es6 class. (hound-search#440)

Upgrade all devDependencies in webpack build. (hound-search#439)

Corrected a typo in readme.md

chore: add manual install option (hound-search#446)

* chore: add another option to install hound

* chore: format

* chore: add $GOPATH/bin in installation

* fix indentation for bulleted list

---------

Co-authored-by: dschott <[email protected]>

kick off for pull requests (hound-search#448)

Add my name to the README

change Advanced options div ID

Merge pull request hound-search#449 from hound-search/jswensen-bug-385

[Issue 385] change Advanced options div ID

Update list of maintainers with additional volunteers (hound-search#451)

Add `display-name` option to customize/disambiguate output (hound-search#454)

Rebuild ui/bindata.go

It seems that ui/bindata.go has got out of sync; the changes from
d25b221 aren't applying and the
advanced dialog box is always showing, as the div doesn't match.

Regenerating this seems to make things work

Closes: hound-search#453

bump the version (hound-search#457)

Update alpine to 3.16 and switch from bzr to breezy (hound-search#429)

Co-authored-by: David Schott <[email protected]>

Add support for manually setting a limit on results

* Added a query parameter to allow user to specify max results, rather
  than a hard limit at 5000, for each index.
* Added support for a default max result limit in the config.  If unset,
  it remains at the former default of 5000 results per index.
* Fixed issue where no results would be returned if the limit was
  exceeded - now it simply returns the results up to the limit.

Add tests for parse min/max bounds

Merge pull request hound-search#464 from hound-search/AlexTalks/tests

Add support for manually setting a limit on results(copy)

Another attempt to replace go-bindata with //go:embed (hound-search#460)

* switch from go-bindata to embed

Signed-off-by: moson-mo <[email protected]>

* bump semver dependency to v4

Signed-off-by: moson-mo <[email protected]>

* amend workflow jobs for go-embed switch

Signed-off-by: moson-mo <[email protected]>

---------

Signed-off-by: moson-mo <[email protected]>

Remove jquery from hound

Merge pull request hound-search#465 from hound-search/iagu/remove-jquery

Remove jquery from hound

Add fake source

Copy with rsync

fake: Do not copy, use a symlink

Rebase on the latest version

Replace tar hashing with golang.org/x/mod and add options

Rename vcs driver from "fake" to "local"

Rename "detect-changes" to "watch-changes"

Update the README

Clarify a few things in the comments

Suppress the linting error

Prevent line numbers from being copied in search results

Merge remote-tracking branch 'mainline/main' into sync_with_mainline

support phab repo links

Reviewers: #risk_assessment_framework!

Subscribers: #risk_assessment_framework

Differential Revision: https://phab.easypo.net/D61327
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants