{"id":17032993,"url":"https://github.com/gbbr/ev","last_synced_at":"2025-03-22T17:31:19.320Z","repository":{"id":78032118,"uuid":"105130531","full_name":"gbbr/ev","owner":"gbbr","description":"explore the evolution of a function","archived":false,"fork":false,"pushed_at":"2017-10-04T08:06:21.000Z","size":13261,"stargazers_count":54,"open_issues_count":0,"forks_count":2,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-18T13:51:15.305Z","etag":null,"topics":["cli","git-log","go","react-redux","tool"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gbbr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-09-28T09:39:44.000Z","updated_at":"2021-11-26T09:15:22.000Z","dependencies_parsed_at":"2023-03-13T20:14:11.227Z","dependency_job_id":null,"html_url":"https://github.com/gbbr/ev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbr%2Fev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbr%2Fev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbr%2Fev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbr%2Fev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gbbr","download_url":"https://codeload.github.com/gbbr/ev/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244995103,"owners_count":20544287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","git-log","go","react-redux","tool"],"created_at":"2024-10-14T08:31:33.906Z","updated_at":"2025-03-22T17:31:18.368Z","avatar_url":"https://github.com/gbbr.png","language":"JavaScript","readme":"## ev\nexplore the evolution of a function in your browser.\n\n### installation\n\n```\ngo get gbbr.io/ev/cmd/...\n```\n\n### usage\n\n```\nusage: ev \u003cfuncname\u003e:\u003cfile\u003e\n```\nThe command will open the browser showing snapshots of how the function `funcname` from `file` evolved in time throughout various git commits. I created it to better help me understand a codebase while trying to learn more about the implementation of Go's standard library. It can be used with any programming language.\n\nBelow is an example screenshot viewing the `IndexAny` function from Go's `bytes` package.\n\n![ev](http://i67.tinypic.com/2eatsfc.png)\n\nSee a [demo](https://youtu.be/GqfDZX7xLUQ) of it, or try it out yourself!\n\n---\n\nNote that `ev` uses `git log -L:\u003cre\u003e:\u003cfn\u003e` syntax, meaning that it also comes with its limitations. More specifically, if the file has multiple functions sharing the same name (ie. both method and function) it will only refer to the first occurrence starting from the top of the file.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbbr%2Fev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgbbr%2Fev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbbr%2Fev/lists"}