6
0
mirror of https://github.com/grdl/git-get.git synced 2026-02-06 08:12:57 +00:00
Commit Graph

65 Commits

Author SHA1 Message Date
Grzegorz Dlugoszewski
c2fe6e6bab Move test package inside the git package
It is not being used by other packages so it should belong to `git` package.
2020-07-27 12:17:30 +02:00
Grzegorz Dlugoszewski
3aef50a4d0 Move status loader into the git package
- Loading status belongs to git domain so it makes more sense for it to
  be in git package.
- It also makes the `list` file simpler.
- Because status loader is now part of the RepoFinder, the ugly Repo interface is no longer necessary.
2020-07-27 11:15:35 +02:00
Grzegorz Dlugoszewski
13e936c376 Add repo finder tests 2020-07-08 14:58:19 +02:00
Grzegorz Dlugoszewski
cdca8b89d9 Move temp dir cleanup into tempDir function
Cleaning up belongs to a directory, not an abstract git repo.
2020-07-08 14:37:29 +02:00
Grzegorz Dlugoszewski
8ab4681c26 Refactor repoFinder
- Remove io package and move finder to git package
- Move tempDir and writeFile into test package. They are only used for testing purposes anyway.
- Add a way to specify parent folder for tempDir. Useful for testing nested repos.
- Add new test repos with .git/config files
2020-07-08 14:37:29 +02:00
Mallory Adams
5ab6031382 Do not traverse through git repositories (#6)
This makes `git list` a lot faster (10 minutes to under 2 minutes in one
test) and displays more useful information.

Example of `git list` from before this change demonstrating that `git
list` was hiding the information about the main repository in favour of
showing information about a `composer` dependency:

```
├── iguana-extras
│   └── vendor
│       └── dxw
│           └── iguana HEAD ok
│                      master ok
```

Example from after this change:

```
├── iguana-extras master  [ 1 untracked ]
│                 feature/readme no upstream
│                 feature/update-iguana no upstream
│                 fix/php-cs-fixer no upstream
```
2020-07-08 14:35:22 +02:00
Grzegorz Dlugoszewski
0064fc3b8e Add --skip-host flag to get command (#7)
When set, git-get won't create a directory for the repo host.
So instead of `<root>/<host>/<user>/<repo>`, a repo will be cloned into `<root>/<user>/<repo>`.
It's useful if all repos some from the same host and that additional folder feels redundant.
2020-07-07 18:35:30 +02:00
Grzegorz Dlugoszewski
132b3ef13d Fix missing fetch call 2020-07-02 09:39:35 +02:00
Grzegorz Dlugoszewski
5c9cb12bab Fix tree view indentation 2020-07-01 21:31:50 +02:00
Grzegorz Dlugoszewski
d964158bf7 Fix problems with loading values from gitconfig 2020-06-30 21:25:42 +02:00
Grzegorz Dlugoszewski
aee6d8209b Improve printing tree view
...by correctly indenting the branches list
2020-06-30 16:19:15 +02:00
Grzegorz Dlugoszewski
d0797ad9b7 Fix showing stdout of git commands
We need to capture also stderr because this is where eg, the progress of git clone is printed
2020-06-30 13:54:43 +02:00
Grzegorz Dlugoszewski
29330d8af7 Add missing docstrings 2020-06-30 11:32:05 +02:00
Grzegorz Dlugoszewski
235ea0d811 Replace path.Join with filepath.Join
Path is for URLs, filepath is for os paths. This solves the problem with wrong repo root on windows.
2020-06-30 11:25:49 +02:00
Grzegorz Dlugoszewski
b8606568ef Expand home dir path after reading config 2020-06-30 11:22:55 +02:00
Grzegorz Dlugoszewski
7b9e74f903 Skip cloning a repo if target path already exists when getting a dump file 2020-06-30 10:23:10 +02:00
Grzegorz Dlugoszewski
28b24ec5ce Add a run package responsible for running git commands
- Add better git error handling
- Move repo helpers into a separate package
2020-06-26 13:36:58 +02:00
Grzegorz Dlugoszewski
7c5abae165 Remove verbose flags from git clone 2020-06-25 13:00:30 +02:00
Grzegorz Dlugoszewski
539c3beb90 Load repos status simultaneously with goroutines
Also, refactor printer interface.
2020-06-25 12:53:27 +02:00
Grzegorz Dlugoszewski
da8849d7f5 Update dump tests to better follow table-driven pattern 2020-06-25 09:50:12 +02:00
Grzegorz Dlugoszewski
fe07ab3c8a Fix typos in comments 2020-06-25 00:00:09 +02:00
Grzegorz Dlugoszewski
8c132cdafa Remove gogit and major refactoring (#2)
* Fix typo in readme

* Reimplement all git methods without go-git

* Rename repo pkg to git, add gitconfig methods

* Improve tests for configuration reading

* Rename package file to io and move RepoFinder there

* Refactor printers

- Remove smart printer
- Decouple printers from git repos with interfaces
- Update printer functions
- Remove unnecessary flags
- Add better remote URL detection

* Update readme and go.mod

* Add author to git commit in tests

Otherwise tests will fail in CI.

* Install git before running tests and don't use cgo

* Add better error message, revert installing git

* Ensure commit message is in quotes

* Set up git config before running tests
2020-06-24 23:54:44 +02:00
Grzegorz Dlugoszewski
4868713746 Update help commands and errors messages 2020-06-19 16:39:26 +02:00
Grzegorz Dlugoszewski
de51c05158 Update readme, add some todos, add example svg 2020-06-19 13:31:01 +02:00
Grzegorz Dlugoszewski
32211e6408 Cleanup the print package
- Use strings.Builder instead of concatenation
- Move smart tree to a separate file
- Add missing docstrings
2020-06-18 19:20:03 +02:00
Grzegorz Dlugoszewski
4fbdcde57b Fallback to default branch when cloning instead of parsing 2020-06-18 18:45:04 +02:00
Grzegorz Dlugoszewski
e800652a6e Implement ignoreExisting flag and set default branch also for dump cloning 2020-06-18 17:30:42 +02:00
Grzegorz Dlugoszewski
7ba950a6a0 Refactor cloning dump file 2020-06-18 17:10:14 +02:00
Grzegorz Dlugoszewski
3e9c7644c6 Rename bundle to dump 2020-06-18 15:47:15 +02:00
Grzegorz Dlugoszewski
5a588f22d1 Refactor implementations of get and list commands
- Simplify the main functions by moving actual implementation to "pkg" package
- Remove the "path" package and move files into the root "pkg" package
- Replace viper with explicit Cfg structs
2020-06-18 15:44:10 +02:00
Grzegorz Dlugoszewski
8511cd6c97 Rename git package to repo package 2020-06-18 14:22:03 +02:00
Grzegorz Dlugoszewski
da8f0931d0 Add a "dump" output option to git-list
It prints a list of all repos URL and is supposed to be consumed by `git get --dump` option.
2020-06-18 11:05:39 +02:00
Grzegorz Dlugoszewski
5835777850 Split get and list commands into separate binaries 2020-06-12 21:36:31 +02:00
Grzegorz Dlugoszewski
c71ebea2d4 Move the version metadata to cfg packageThis way it can be used by multiple binaries. 2020-06-12 21:09:32 +02:00
Grzegorz Dlugoszewski
33ca245d3a Refactor pkg directory back 2020-06-12 20:19:05 +02:00
Grzegorz Dlugoszewski
f3d0df1bfd Refactor packages structure
- Isolate files into their own packages
- Create new printer package and interface
- Refactor Repo stuct to embed the go-git *Repository directly
- Simplify cmd package
2020-06-08 12:07:03 +02:00
Grzegorz Dlugoszewski
29c21cb78d Improve the implementation of the smart tree printer
It now correctly indents lines with branches status
2020-06-06 16:56:42 +02:00
Grzegorz Dlugoszewski
13c03bc2ef Add new tree implementation and remove treeprint dependency 2020-06-06 10:00:11 +02:00
Grzegorz Dlugoszewski
1f707ad7db Test new tree implementation of repos list 2020-06-04 20:26:27 +02:00
Grzegorz Dlugoszewski
239ff699a3 Add ssh key authentication when cloning via ssh 2020-06-04 15:45:46 +02:00
Grzegorz Dlugoszewski
f4636a3a73 Fix reading config values from cli flags
* InitConfig needs to be called after cmd.Execute, otherwise the flags are not parsed yet
* Values need to be checked also for emptiness, not only for being unset
2020-06-04 13:02:24 +02:00
Grzegorz Dlugoszewski
7d2c9b1954 Fix tests after changing the way branches are ordered
"master" branch is now always on top.
2020-06-04 12:24:37 +02:00
Grzegorz Dlugoszewski
f2d8496136 Refactor config provider using viper 2020-06-04 11:38:01 +02:00
Grzegorz Dlugoszewski
205eecc073 Update branch name sorting to keep master always on top 2020-06-03 16:39:22 +02:00
Grzegorz Dlugoszewski
142fdf1844 Add printing status of multiple branches 2020-06-03 16:21:01 +02:00
Grzegorz Dlugoszewski
64dfea5a7f Add a list flag and basic rendering of repos status 2020-06-03 15:59:51 +02:00
Grzegorz Dlugoszewski
b7bd30c960 Check if repos root exists and is not empty before opening repos 2020-06-03 13:25:01 +02:00
Grzegorz Dlugoszewski
8a79dcfd9f Add checking what is the current branch and if HEAD is detached 2020-06-02 16:46:10 +02:00
Grzegorz Dlugoszewski
1406aa78c6 Load gitignore patterns also from files declared in excludesfile 2020-06-02 14:34:10 +02:00
Grzegorz Dlugoszewski
abf220355c Add basic printing of all repos status 2020-06-02 12:40:22 +02:00