Compare commits

...
39 Commits
Author SHA1 Message Date
Jesse Duffield e6a6301144 bump version to v0.1.71 2018-08-19 19:47:04 +10:00
Jesse Duffield c5d4024d58 compare error message rather than error itself on no-commits error 2018-08-19 18:51:42 +10:00
Jesse Duffield 81b07daa01 Merge branch 'hotfix/167-ambiguous-name-in-diff' 2018-08-19 15:06:06 +10:00
Jesse Duffield 93266cc2a4 support forked branches when getting project root 2018-08-19 15:05:36 +10:00
Jesse Duffield 60fc24eada Merge pull request #172 from jesseduffield/hotfix/167-ambiguous-name-in-diff
167: Support File names that match Branch names
2018-08-19 14:53:14 +10:00
Jesse Duffield 6978785ccf add user email and config to test repo generators 2018-08-19 14:52:08 +10:00
Jesse Duffield cd9eada0c6 add test for variety of potential git diff situations 2018-08-19 14:48:39 +10:00
Jesse Duffield 7b3679d546 Merge pull request #181 from glvr182/feature/ignore-unused
Cleaned the gitignore and added the linux binary
2018-08-19 13:26:35 +10:00
Jesse Duffield c8e63894b4 Merge pull request #182 from glvr182/feature/docs-images
Feature/docs images
2018-08-19 13:25:23 +10:00
Jesse Duffield af93d04479 Merge pull request #183 from mjarkk/master
Removed logrus logger import from i18n
2018-08-19 13:23:29 +10:00
Mark Kopenga 29f2bdbba3 removed logrus logger import 2018-08-18 14:03:20 +02:00
Mark Kopenga c90e865e34 Merge pull request #10 from jesseduffield/master
Updated to latest master
2018-08-18 14:00:41 +02:00
Jesse Duffield b104dccab2 Merge pull request #163 from dawidd6/translation/pl
Add Polish translation
2018-08-18 21:08:56 +10:00
Glenn Vriesman 2dbd5be24e Removed duplicates 2018-08-18 13:04:44 +02:00
Glenn Vriesman 0a4cf6a544 Docs: Fixed typo 2018-08-18 12:56:15 +02:00
Glenn Vriesman 5f5e275a0e Docs: Made commit-diffs example a local file 2018-08-18 12:55:13 +02:00
Glenn Vriesman 7b85d146af Docs: Made resolving merge conflicts a local file 2018-08-18 12:53:26 +02:00
Glenn Vriesman fd01cdb137 Docs: Made the example gif a local file 2018-08-18 12:51:15 +02:00
Glenn Vriesman 9e8dc37308 Docs: Moved slack image to docs/resources 2018-08-18 12:46:50 +02:00
Jesse Duffield 08666889f4 improve remove file logic 2018-08-18 20:14:44 +10:00
Glenn Vriesman c091401571 Cleaned the gitignore and added the linux binary 2018-08-18 11:49:37 +02:00
Jesse Duffield 0174375562 Merge pull request #180 from jesseduffield/hotfix/174-nil-pointer-reference-on-startup
Hotfix for issue 174: avoid nil pointer reference on startup
2018-08-18 19:45:28 +10:00
Jesse Duffield 1f756d3d0a avoid nil pointer reference on startup 2018-08-18 19:43:58 +10:00
Jesse Duffield 6473e5ca3c use runtime package to get GOOS and GOARCH 2018-08-18 17:28:03 +10:00
Jesse Duffield 896dda3adf bump version to v0.1.70 2018-08-18 17:17:22 +10:00
Jesse Duffield b9ef1a4d67 leave bump commits out of release notes 2018-08-18 17:17:05 +10:00
Jesse Duffield 671c693459 bump version to v0.1.67 2018-08-18 17:12:44 +10:00
Jesse Duffield 41171304b2 add platform/os details to goreleaser ldflags 2018-08-18 17:10:27 +10:00
Jesse Duffield f025b289f0 enforce white text color in prompt panels 2018-08-18 16:23:19 +10:00
Jesse Duffield 3f5c1a4243 bump version to v0.1.66 2018-08-18 16:00:30 +10:00
Mark Kopenga 0f145093fe Here i a fix for the error go complain on your pull 2018-08-17 20:43:51 +02:00
Jesse Duffield bd91b9e1e9 add test repo for all the kinds of files that show up when diffing 2018-08-17 22:46:10 +10:00
Dawid Dziurla bf5f3bb972 pl translation 3 2018-08-17 14:27:13 +02:00
Jesse Duffield 03a7e32694 support filenames that match branchnames 2018-08-17 22:25:53 +10:00
Dawid Dziurla b0e08491ac pl translation 2 2018-08-17 14:11:48 +02:00
Mark Kopenga 633553bcf8 Merge pull request #7 from jesseduffield/master
Update to latest master
2018-08-17 10:33:10 +02:00
Mark Kopenga 5c738fa493 Removed duplicates 2018-08-16 20:59:32 +02:00
Mark Kopenga 9a0f29ff5b Merge pull request #5 from jesseduffield/master
Updated to latest master
2018-08-16 20:08:14 +02:00
Dawid Dziurla 2d80a83d27 pl translation 1 2018-08-16 18:56:16 +02:00
29 changed files with 579 additions and 33 deletions
+13 -2
View File
@@ -1,7 +1,18 @@
development.log
commands.log
# Please do not add personal files
# Logs
*.log
# Extras
extra/lgit.rb
# Notes
notes/go.notes
TODO.notes
TODO.md
# Tests
test/repos/repo
# Binaries
lazygit
+4
View File
@@ -13,6 +13,9 @@ builds:
- arm
- arm64
- 386
ldflags:
- -s -w -X main.version={{.Version}} -X main.tag={{.Tag}} -X main.date={{.Date}} -X main.commit={{.Commit}} -X main.goos={{.Os}} -X main.arch={{.Arch}} -X main.arm={{.Arm}}
archive:
replacements:
darwin: Darwin
@@ -33,6 +36,7 @@ changelog:
exclude:
- '^docs:'
- '^test:'
- '^bump'
brew:
# Reporitory to push the tap to.
github:
+5 -5
View File
@@ -7,7 +7,7 @@ too stubborn to use Sourcetree because you'll never forgive Atlassian for making
Jira? This is the app for you!
![Gif](https://image.ibb.co/mmeXho/optimisedgif.gif)
![Gif](/docs/resources/lazygit-example.gif)
* [Installation](https://github.com/jesseduffield/lazygit#installation)
* [Usage](https://github.com/jesseduffield/lazygit#usage),
@@ -90,7 +90,7 @@ whichever rc file you're using).
* Basic video tutorial [here](https://www.youtube.com/watch?v=VDXvbHZYeKY).
* List of keybindings
[here](https://github.com/jesseduffield/lazygit/blob/master/docs/Keybindings.md).
[here](/docs/Keybindings.md).
## Cool features
* Adding files easily
@@ -101,10 +101,10 @@ whichever rc file you're using).
* Squash down and rename commits
### Resolving merge conflicts
![Gif](https://image.ibb.co/iyxUTT/shortermerging.gif)
![Gif](/docs/resources/resolving-merge-conflicts.gif)
### Viewing commit diffs
![Viewing Commit Diffs](https://image.ibb.co/gPD02o/capture.png)
![Viewing Commit Diffs](/docs/resources/viewing-commit-diffs.png)
## Milestones
- [x] Easy Installation (homebrew, release binaries)
@@ -119,7 +119,7 @@ whichever rc file you're using).
We love your input! Please check out the [contributing guide](CONTRIBUTING.md).
For contributor discussion about things not better discussed here in the repo, join the slack channel
[![Slack](/files/slack_rgb.png)](https://join.slack.com/t/lazygit/shared_invite/enQtNDE3MjIwNTYyMDA0LTM3Yjk3NzdiYzhhNTA1YjM4Y2M4MWNmNDBkOTI0YTE4YjQ1ZmI2YWRhZTgwNjg2YzhhYjg3NDBlMmQyMTI5N2M)
[![Slack](/docs/resources/slack_rgb.png)](https://join.slack.com/t/lazygit/shared_invite/enQtNDE3MjIwNTYyMDA0LTM3Yjk3NzdiYzhhNTA1YjM4Y2M4MWNmNDBkOTI0YTE4YjQ1ZmI2YWRhZTgwNjg2YzhhYjg3NDBlMmQyMTI5N2M)
## Work in progress
This is still a work in progress so there's still bugs to iron out and as this
+1 -1
View File
@@ -1 +1 @@
v0.1.65
v0.1.71
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

+9 -2
View File
@@ -6,6 +6,7 @@ import (
"io/ioutil"
"os"
"path/filepath"
"runtime"
"github.com/jesseduffield/lazygit/pkg/app"
"github.com/jesseduffield/lazygit/pkg/config"
@@ -43,7 +44,7 @@ func main() {
version = fallbackVersion()
}
if *versionFlag {
fmt.Printf("commit=%s, build date=%s, version=%s\n", commit, date, version)
fmt.Printf("commit=%s, build date=%s, version=%s, os=%s, arch=%s\n", commit, date, version, runtime.GOOS, runtime.GOARCH)
os.Exit(0)
}
appConfig, err := config.NewAppConfig("lazygit", version, commit, date, debuggingFlag)
@@ -52,7 +53,13 @@ func main() {
}
app, err := app.NewApp(appConfig)
app.Log.Info(err)
if err != nil {
// TODO: remove this call to panic after anonymous error reporting
// is setup (right now the call to panic logs nothing to the screen which
// would make debugging difficult
panic(err)
// app.Log.Panic(err.Error())
}
app.GitCommand.SetupGit()
app.Gui.RunWithSubprocesses()
}
+4 -4
View File
@@ -48,21 +48,21 @@ func NewApp(config config.AppConfigurer) (*App, error) {
app.Log = newLogger(config)
app.OSCommand, err = commands.NewOSCommand(app.Log)
if err != nil {
return nil, err
return app, err
}
app.Tr, err = i18n.NewLocalizer(app.Log)
if err != nil {
return nil, err
return app, err
}
app.GitCommand, err = commands.NewGitCommand(app.Log, app.OSCommand)
if err != nil {
return nil, err
return app, err
}
app.Gui, err = gui.NewGui(app.Log, app.GitCommand, app.OSCommand, app.Tr, config)
if err != nil {
return nil, err
return app, err
}
return app, nil
}
+10 -9
View File
@@ -81,7 +81,7 @@ func (c *GitCommand) GetStatusFiles() []File {
stagedChange := change[0:1]
unstagedChange := statusString[1:2]
filename := statusString[3:]
tracked := !includes([]string{"??", "A "}, change)
tracked := !includes([]string{"??", "A ", "AM"}, change)
file := File{
Name: filename,
DisplayString: statusString,
@@ -358,11 +358,16 @@ func (c *GitCommand) IsInMergeState() (bool, error) {
// RemoveFile directly
func (c *GitCommand) RemoveFile(file File) error {
// if the file isn't tracked, we assume you want to delete it
if file.HasStagedChanges {
if err := c.OSCommand.RunCommand("git reset -- " + file.Name); err != nil {
return err
}
}
if !file.Tracked {
return os.RemoveAll(file.Name)
return os.RemoveAll(c.OSCommand.Unquote(file.Name))
}
// if the file is tracked, we assume you want to just check it out
return c.OSCommand.RunCommand("git checkout " + file.Name)
return c.OSCommand.RunCommand("git checkout -- " + file.Name)
}
// Checkout checks out a branch, with --force if you set the force arg to true
@@ -481,15 +486,11 @@ func (c *GitCommand) Diff(file File) string {
// if the file is staged and has spaces in it, it comes pre-quoted
fileName = c.OSCommand.Quote(fileName)
}
deletedArg := ""
if file.Deleted {
deletedArg = "--"
}
trackedArg := ""
trackedArg := "--"
if !file.Tracked && !file.HasStagedChanges {
trackedArg = "--no-index /dev/null"
}
command := fmt.Sprintf("%s %s %s %s %s", "git diff --color ", cachedArg, deletedArg, trackedArg, fileName)
command := fmt.Sprintf("%s %s %s %s", "git diff --color ", cachedArg, trackedArg, fileName)
// for now we assume an error means the file was deleted
s, _ := c.OSCommand.RunCommandWithOutput(command)
+126
View File
@@ -0,0 +1,126 @@
package commands
import (
"io/ioutil"
"strings"
"testing"
"github.com/Sirupsen/logrus"
"github.com/jesseduffield/lazygit/pkg/test"
)
func getDummyLog() *logrus.Logger {
log := logrus.New()
log.Out = ioutil.Discard
return log
}
func getDummyOSCommand() *OSCommand {
return &OSCommand{
Log: getDummyLog(),
Platform: getPlatform(),
}
}
func getDummyGitCommand() *GitCommand {
return &GitCommand{
Log: getDummyLog(),
OSCommand: getDummyOSCommand(),
}
}
func TestDiff(t *testing.T) {
gitCommand := getDummyGitCommand()
if err := test.GenerateRepo("lots_of_diffs.sh"); err != nil {
t.Error(err.Error())
}
files := []File{
{
Name: "deleted_staged",
HasStagedChanges: false,
HasUnstagedChanges: true,
Tracked: true,
Deleted: true,
HasMergeConflicts: false,
DisplayString: " D deleted_staged",
},
{
Name: "\"file with space staged\"",
HasStagedChanges: true,
HasUnstagedChanges: false,
Tracked: false,
Deleted: false,
HasMergeConflicts: false,
DisplayString: "A \"file with space staged\"",
},
{
Name: "file with space unstaged",
HasStagedChanges: false,
HasUnstagedChanges: true,
Tracked: false,
Deleted: false,
HasMergeConflicts: false,
DisplayString: "?? file with space unstaged",
},
{
Name: "modified_unstaged",
HasStagedChanges: true,
HasUnstagedChanges: false,
Tracked: true,
Deleted: false,
HasMergeConflicts: false,
DisplayString: "M modified_unstaged",
},
{
Name: "modified_staged",
HasStagedChanges: false,
HasUnstagedChanges: true,
Tracked: true,
Deleted: false,
HasMergeConflicts: false,
DisplayString: " M modified_staged",
},
{
Name: "renamed_before -> renamed_after",
HasStagedChanges: true,
HasUnstagedChanges: false,
Tracked: true,
Deleted: false,
HasMergeConflicts: false,
DisplayString: "R renamed_before -> renamed_after",
},
{
Name: "untracked_unstaged",
HasStagedChanges: false,
HasUnstagedChanges: true,
Tracked: false,
Deleted: false,
HasMergeConflicts: false,
DisplayString: "?? untracked_unstaged",
},
{
Name: "untracked_staged",
HasStagedChanges: true,
HasUnstagedChanges: false,
Tracked: false,
Deleted: false,
HasMergeConflicts: false,
DisplayString: "A untracked_staged",
},
{
Name: "master",
HasStagedChanges: false,
HasUnstagedChanges: true,
Tracked: false,
Deleted: false,
HasMergeConflicts: false,
DisplayString: "?? master",
},
}
for _, file := range files {
content := gitCommand.Diff(file)
if strings.Contains(content, "error") {
t.Error("Error: diff test failed. File: " + file.Name + ", " + content)
}
}
}
+7
View File
@@ -167,3 +167,10 @@ func (c *OSCommand) Quote(message string) string {
message = strings.Replace(message, "`", "\\`", -1)
return c.Platform.escapedQuote + message + c.Platform.escapedQuote
}
// Unquote removes wrapping quotations marks if they are present
// this is needed for removing quotes from staged filenames with spaces
func (c *OSCommand) Unquote(message string) string {
message = strings.Replace(message, `"`, "", -1)
return message
}
+1 -1
View File
@@ -74,7 +74,7 @@ func (gui *Gui) handleCommitSelect(g *gocui.Gui, v *gocui.View) error {
}
commit, err := gui.getSelectedCommit(g)
if err != nil {
if err != errors.New(gui.Tr.SLocalize("NoCommitsThisBranch")) {
if err.Error() != gui.Tr.SLocalize("NoCommitsThisBranch") {
return err
}
return gui.renderString(g, "main", gui.Tr.SLocalize("NoCommitsThisBranch"))
+1
View File
@@ -67,6 +67,7 @@ func (gui *Gui) createPromptPanel(g *gocui.Gui, currentView *gocui.View, title s
confirmationView.Editable = true
confirmationView.Title = title
confirmationView.FgColor = gocui.ColorWhite
gui.switchFocus(g, currentView, confirmationView)
return gui.setKeyBindings(g, handleConfirm, nil)
}
+1 -1
View File
@@ -128,7 +128,7 @@ func (gui *Gui) handleFileRemove(g *gocui.Gui, v *gocui.View) error {
)
return gui.createConfirmationPanel(g, v, strings.Title(deleteVerb)+" file", message, func(g *gocui.Gui, v *gocui.View) error {
if err := gui.GitCommand.RemoveFile(file); err != nil {
panic(err)
return err
}
return gui.refreshFiles(g)
}, nil)
+2 -2
View File
@@ -6,10 +6,10 @@ import (
)
// addDutch will add all dutch translations
func addDutch(i18nObject *i18n.Bundle) {
func addDutch(i18nObject *i18n.Bundle) error {
// add the translations
i18nObject.AddMessages(language.Dutch,
return i18nObject.AddMessages(language.Dutch,
&i18n.Message{
ID: "NotEnoughSpace",
Other: "Niet genoeg ruimte om de panelen te renderen",
+2 -2
View File
@@ -15,9 +15,9 @@ import (
"golang.org/x/text/language"
)
func addEnglish(i18nObject *i18n.Bundle) {
func addEnglish(i18nObject *i18n.Bundle) error {
i18nObject.AddMessages(language.English,
return i18nObject.AddMessages(language.English,
&i18n.Message{
ID: "NotEnoughSpace",
Other: "Not enough space to render panels",
+15 -4
View File
@@ -30,7 +30,7 @@ func NewLocalizer(log *logrus.Logger) (*Localizer, error) {
// create a i18n bundle that can be used to add translations and other things
i18nBundle := &i18n.Bundle{DefaultLanguage: language.English}
addBundles(i18nBundle)
addBundles(log, i18nBundle)
// return the new localizer that can be used to translate text
i18nLocalizer := i18n.NewLocalizer(i18nBundle, userLang)
@@ -78,7 +78,18 @@ func (l *Localizer) GetLanguage() string {
}
// add translation file(s)
func addBundles(i18nBundle *i18n.Bundle) {
addDutch(i18nBundle)
addEnglish(i18nBundle)
func addBundles(log *logrus.Logger, i18nBundle *i18n.Bundle) {
err := addPolish(i18nBundle)
if err != nil {
log.Fatal(err)
}
err = addDutch(i18nBundle)
if err != nil {
log.Fatal(err)
}
err = addEnglish(i18nBundle)
if err != nil {
log.Fatal(err)
}
}
+289
View File
@@ -0,0 +1,289 @@
package i18n
import (
"github.com/nicksnyder/go-i18n/v2/i18n"
"golang.org/x/text/language"
)
func addPolish(i18nObject *i18n.Bundle) error {
return i18nObject.AddMessages(language.Polish,
&i18n.Message{
ID: "NotEnoughSpace",
Other: "Za mało miejsca do wyświetlenia paneli",
}, &i18n.Message{
ID: "DiffTitle",
Other: "Różnice",
}, &i18n.Message{
ID: "FilesTitle",
Other: "Pliki",
}, &i18n.Message{
ID: "BranchesTitle",
Other: "Gałęzie",
}, &i18n.Message{
ID: "CommitsTitle",
Other: "Commity",
}, &i18n.Message{
ID: "StashTitle",
Other: "Schowek",
}, &i18n.Message{
ID: "CommitMessage",
Other: "Wiadomość commita",
}, &i18n.Message{
ID: "CommitChanges",
Other: "commituj zmiany",
}, &i18n.Message{
ID: "StatusTitle",
Other: "Status",
}, &i18n.Message{
ID: "navigate",
Other: "nawiguj",
}, &i18n.Message{
ID: "stashFiles",
Other: "przechowaj pliki",
}, &i18n.Message{
ID: "open",
Other: "otwórz",
}, &i18n.Message{
ID: "ignore",
Other: "ignoruj",
}, &i18n.Message{
ID: "delete",
Other: "usuń",
}, &i18n.Message{
ID: "toggleStaged",
Other: "przełącz zatwierdzenie",
}, &i18n.Message{
ID: "refresh",
Other: "odśwież",
}, &i18n.Message{
ID: "addPatch",
Other: "dodaj łatkę",
}, &i18n.Message{
ID: "edit",
Other: "edytuj",
}, &i18n.Message{
ID: "scroll",
Other: "przewiń",
}, &i18n.Message{
ID: "abortMerge",
Other: "o scalaniu",
}, &i18n.Message{
ID: "resolveMergeConflicts",
Other: "rozwiąż konflikty scalania",
}, &i18n.Message{
ID: "checkout",
Other: "przełącz",
}, &i18n.Message{
ID: "NoChangedFiles",
Other: "Brak zmienionych plików",
}, &i18n.Message{
ID: "FileHasNoUnstagedChanges",
Other: "Plik nie zawiera żadnych nieopublikowanych zmian do dodania",
}, &i18n.Message{
ID: "CannotGitAdd",
Other: "Nie można git add --patch nieśledzonych plików",
}, &i18n.Message{
ID: "CantIgnoreTrackFiles",
Other: "Nie można zignorować nieśledzonych plików",
}, &i18n.Message{
ID: "NoStagedFilesToCommit",
Other: "Brak zatwierdzonych plików do commita",
}, &i18n.Message{
ID: "NoFilesDisplay",
Other: "Brak pliku do wyświetlenia",
}, &i18n.Message{
ID: "PullWait",
Other: "Wciąganie zmian...",
}, &i18n.Message{
ID: "PushWait",
Other: "Wypychanie zmian...",
}, &i18n.Message{
ID: "FileNoMergeCons",
Other: "Ten plik nie powoduje konfliktów scalania",
}, &i18n.Message{
ID: "SureResetHardHead",
Other: "Jesteś pewny, że chcesz wykonać `reset --hard HEAD`? Możesz stracić wprowadzone zmiany",
}, &i18n.Message{
ID: "SureTo",
Other: "Jesteś pewny, że chcesz {{.deleteVerb}} {{.fileName}} (stracisz swoje wprowadzone zmiany)?",
}, &i18n.Message{
ID: "AlreadyCheckedOutBranch",
Other: "Już przęłączono na tą gałąź",
}, &i18n.Message{
ID: "SureForceCheckout",
Other: "Jesteś pewny, że chcesz wymusić przełączenie? Stracisz wszystkie lokalne zmiany",
}, &i18n.Message{
ID: "ForceCheckoutBranch",
Other: "Wymuś przełączenie gałęzi",
}, &i18n.Message{
ID: "BranchName",
Other: "Nazwa gałęzi",
}, &i18n.Message{
ID: "NewBranchNameBranchOff",
Other: "Nazwa nowej gałęzi (gałąź na bazie {{.branchName}})",
}, &i18n.Message{
ID: "CantDeleteCheckOutBranch",
Other: "Nie możesz usunąć obecnej przełączonej gałęzi!",
}, &i18n.Message{
ID: "DeleteBranch",
Other: "Usuń gałąź",
}, &i18n.Message{
ID: "DeleteBranchMessage",
Other: "Jesteś pewien, że chcesz usunąć gałąź {{.selectedBranchName}} ?",
}, &i18n.Message{
ID: "CantMergeBranchIntoItself",
Other: "Nie możesz scalić gałęzi do samej siebie",
}, &i18n.Message{
ID: "forceCheckout",
Other: "wymuś przełączenie",
}, &i18n.Message{
ID: "merge",
Other: "scal",
}, &i18n.Message{
ID: "checkoutByName",
Other: "przełącz używając nazwy",
}, &i18n.Message{
ID: "newBranch",
Other: "nowa gałąź",
}, &i18n.Message{
ID: "deleteBranch",
Other: "usuń gałąź",
}, &i18n.Message{
ID: "NoBranchesThisRepo",
Other: "Brak gałęzi dla tego repozytorium",
}, &i18n.Message{
ID: "NoTrackingThisBranch",
Other: "Brak śledzenia dla tej gałęzi",
}, &i18n.Message{
ID: "CommitWithoutMessageErr",
Other: "Nie możesz commitować bez podania wiadomości",
}, &i18n.Message{
ID: "CloseConfirm",
Other: "{{.keyBindClose}}: zamknij, {{.keyBindConfirm}}: potwierdź",
}, &i18n.Message{
ID: "SureResetThisCommit",
Other: "Jesteś pewny, że chcesz zresetować ten commit?",
}, &i18n.Message{
ID: "ResetToCommit",
Other: "Zresetuj, aby commitować",
}, &i18n.Message{
ID: "squashDown",
Other: "ściśnij w dół",
}, &i18n.Message{
ID: "rename",
Other: "przemianuj",
}, &i18n.Message{
ID: "resetToThisCommit",
Other: "zresetuj do tego commita",
}, &i18n.Message{
ID: "fixupCommit",
Other: "napraw commit",
}, &i18n.Message{
ID: "NoCommitsThisBranch",
Other: "Brak commitów dla tej gałęzi",
}, &i18n.Message{
ID: "OnlySquashTopmostCommit",
Other: "Można tylko ścisnąć najwyższy commit",
}, &i18n.Message{
ID: "YouNoCommitsToSquash",
Other: "Nie masz commitów do ściśnięcia",
}, &i18n.Message{
ID: "CantFixupWhileUnstagedChanges",
Other: "Nie można wykonać naprawy, kiedy istnieją niezatwierdzone zmiany",
}, &i18n.Message{
ID: "Fixup",
Other: "Napraw",
}, &i18n.Message{
ID: "SureFixupThisCommit",
Other: "Jesteś pewny, ze chcesz naprawić ten commit? Commit poniżej zostanie ściśnięty w górę wraz z tym",
}, &i18n.Message{
ID: "OnlyRenameTopCommit",
Other: "Można przmianować tylko najwyższy commit",
}, &i18n.Message{
ID: "RenameCommit",
Other: "Przemianuj commit",
}, &i18n.Message{
ID: "PotentialErrInGetselectedCommit",
Other: "potencjalny błąd w getSelected Commit (niedopasowane ui i stan)",
}, &i18n.Message{
ID: "NoCommitsThisBranch",
Other: "Brak commitów dla tej gałęzi",
}, &i18n.Message{
ID: "Error",
Other: "Błąd",
}, &i18n.Message{
ID: "resizingPopupPanel",
Other: "skalowanie wyskakującego panelu",
}, &i18n.Message{
ID: "RunningSubprocess",
Other: "uruchomiony podproces",
}, &i18n.Message{
ID: "selectHunk",
Other: "wybierz kawałek",
}, &i18n.Message{
ID: "navigateConflicts",
Other: "nawiguj konflikty",
}, &i18n.Message{
ID: "pickHunk",
Other: "wybierz kawałek",
}, &i18n.Message{
ID: "pickBothHunks",
Other: "wybierz oba kawałki",
}, &i18n.Message{
ID: "undo",
Other: "cofnij",
}, &i18n.Message{
ID: "pop",
Other: "wyciągnij",
}, &i18n.Message{
ID: "drop",
Other: "porzuć",
}, &i18n.Message{
ID: "apply",
Other: "zastosuj",
}, &i18n.Message{
ID: "NoStashEntries",
Other: "Brak pozycji w schowku",
}, &i18n.Message{
ID: "StashDrop",
Other: "Porzuć schowek",
}, &i18n.Message{
ID: "SureDropStashEntry",
Other: "Jesteś pewny, że chcesz porzucić tę pozycję w schowku?",
}, &i18n.Message{
ID: "NoStashTo",
Other: "Brak schowka dla {{.method}}",
}, &i18n.Message{
ID: "NoTrackedStagedFilesStash",
Other: "Nie masz śledzonych/zatwierdzonych plików do przechowania",
}, &i18n.Message{
ID: "StashChanges",
Other: "Przechowaj zmiany",
}, &i18n.Message{
ID: "IssntListOfViews",
Other: "{{.name}} nie jest na liście widoków",
}, &i18n.Message{
ID: "NoViewMachingNewLineFocusedSwitchStatement",
Other: "Brak widoku pasującego do instrukcji przełączania newLineFocused",
}, &i18n.Message{
ID: "settingPreviewsViewTo",
Other: "ustawianie poprzedniego widoku na: {{.oldViewName}}",
}, &i18n.Message{
ID: "newFocusedViewIs",
Other: "nowy skupiony widok to {{.newFocusedView}}",
}, &i18n.Message{
ID: "CantCloseConfirmationPrompt",
Other: "Nie można zamknąć monitu potwierdzenia: {{.error}}",
}, &i18n.Message{
ID: "NoChangedFiles",
Other: "Brak zmienionych plików",
}, &i18n.Message{
ID: "ClearFilePanel",
Other: "Wyczyść panel plików",
}, &i18n.Message{
ID: "MergeAborted",
Other: "Scalanie anulowane",
},
)
}
+25
View File
@@ -0,0 +1,25 @@
package test
import (
"errors"
"os"
"os/exec"
"github.com/jesseduffield/lazygit/pkg/utils"
)
// GenerateRepo generates a repo from test/repos and changes the directory to be
// inside the newly made repo
func GenerateRepo(filename string) error {
testPath := utils.GetProjectRoot() + "/test/repos/"
if err := os.Chdir(testPath); err != nil {
return err
}
if output, err := exec.Command("bash", filename).CombinedOutput(); err != nil {
return errors.New(string(output))
}
if err := os.Chdir(testPath + "repo"); err != nil {
return err
}
return nil
}
+11
View File
@@ -63,3 +63,14 @@ func TrimTrailingNewline(str string) string {
}
return str
}
// GetProjectRoot returns the path to the root of the project. Only to be used
// in testing contexts, as with binaries it's unlikely this path will exist on
// the machine
func GetProjectRoot() string {
dir, err := os.Getwd()
if err != nil {
panic(err)
}
return strings.Split(dir, "lazygit")[0] + "lazygit"
}
+3
View File
@@ -2,6 +2,9 @@
set -ex; rm -rf repo; mkdir repo; cd repo
git init
git config user.email "test@example.com"
git config user.name "Lazygit Tester"
touch foo
git add foo
+3
View File
@@ -2,6 +2,9 @@
set -ex; rm -rf repo; mkdir repo; cd repo
git init
git config user.email "test@example.com"
git config user.name "Lazygit Tester"
git config gpg.program $(which gpg)
git config user.signingkey E304229F # test key
+3
View File
@@ -2,6 +2,9 @@
set -ex; rm -rf repo; mkdir repo; cd repo
git init
git config user.email "test@example.com"
git config user.name "Lazygit Tester"
i=2
end=100
+35
View File
@@ -0,0 +1,35 @@
#!/bin/bash
set -ex; rm -rf repo; mkdir repo; cd repo
git init
git config user.email "test@example.com"
git config user.name "Lazygit Tester"
echo "deleted" > deleted_staged
echo "deleted_unstaged" > deleted_unstaged
echo "modified_staged" > modified_staged
echo "modified_unstaged" > modified_unstaged
echo "renamed" > renamed_before
git add .
git commit -m "files to delete"
rm deleted_staged
rm deleted_unstaged
rm renamed_before
echo "renamed" > renamed_after
echo "more" >> modified_staged
echo "more" >> modified_unstaged
echo "untracked_staged" > untracked_staged
echo "untracked_unstaged" > untracked_unstaged
echo "blah" > "file with space staged"
echo "blah" > "file with space unstaged"
echo "same name as branch" > master
git add deleted_staged
git add modified_staged
git add untracked_staged
git add "file with space staged"
git add renamed_before
git add renamed_after
+3
View File
@@ -2,6 +2,9 @@
set -ex; rm -rf repo; mkdir repo; cd repo
git init
git config user.email "test@example.com"
git config user.name "Lazygit Tester"
function add_spacing {
for i in {1..60}
+3
View File
@@ -2,6 +2,9 @@
set -ex; rm -rf repo; mkdir repo; cd repo
git init
git config user.email "test@example.com"
git config user.name "Lazygit Tester"
cp ../extras/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
+3
View File
@@ -2,6 +2,9 @@
set -ex; rm -rf repo; mkdir repo; cd repo
git init
git config user.email "test@example.com"
git config user.name "Lazygit Tester"
# Add some ansi, unicode, zero width joiner caracters
cat <<EOT >> charstest.txt