<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pakakeh.go/lib/git/git.go, branch dev</title>
<subtitle>Collections of packages and tools for working with Go programming language.</subtitle>
<id>http://git.kilabit.info/pakakeh.go/atom?h=dev</id>
<link rel='self' href='http://git.kilabit.info/pakakeh.go/atom?h=dev'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/'/>
<updated>2026-01-13T23:01:04Z</updated>
<entry>
<title>lib/git: pass "--" when running LogFollow command</title>
<updated>2026-01-13T23:01:04Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-13T23:01:04Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=3a5a19786171b7db01b490f68c791fcfc89647f5'/>
<id>urn:sha1:3a5a19786171b7db01b490f68c791fcfc89647f5</id>
<content type='text'>
The "--" prevent ambiguous argument, to separate a path from revision.

While at it, add more test case for LogFollow.
</content>
</entry>
<entry>
<title>lib/git: add method LogFollow</title>
<updated>2026-01-13T14:06:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-13T14:06:31Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=06eb22e30f855d70468640ea72e23c43e384c793'/>
<id>urn:sha1:06eb22e30f855d70468640ea72e23c43e384c793</id>
<content type='text'>
The LogFollow method return history of single file `path`, following
rename.

This method accept second paramter "format", default to
'%h,%at,%an,%ae,%s' which print short hash, author commit timestamp,
author name, author email, and subject; respectively separated by comma.
</content>
</entry>
<entry>
<title>lib/git: fix ignore pattern with single wildcard '*'</title>
<updated>2026-01-11T14:29:17Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-11T11:43:56Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=cdfebe3f55dc53872079a96a9a5dd6970bc2980e'/>
<id>urn:sha1:cdfebe3f55dc53872079a96a9a5dd6970bc2980e</id>
<content type='text'>
Single wildcard should ignore everything inside it.
</content>
</entry>
<entry>
<title>lib/git: implement Equaler interface on Git</title>
<updated>2026-01-06T07:56:07Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-05T14:47:09Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=f9567f0d4fc5cf6d0e1cea2d22289250c6b1cb2b'/>
<id>urn:sha1:f9567f0d4fc5cf6d0e1cea2d22289250c6b1cb2b</id>
<content type='text'>
The Equaler interface provide the method Equal that when implemented
can be used to compare two instances of struct.
</content>
</entry>
<entry>
<title>lib/git: add Git type with method IsIgnored</title>
<updated>2026-01-06T07:56:07Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-01T17:40:21Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=18be916ab6f8911fd23d8f0a91f5a26f3c07f636'/>
<id>urn:sha1:18be916ab6f8911fd23d8f0a91f5a26f3c07f636</id>
<content type='text'>
The Git type is for working with single git repository.

The [Git.IsIgnored] method is to check if the `path` is ignored by
git.
This is processed by matching it with all of the pattern in the
".gitignore" file from the path directory and its parent until the
root of Git repository.
</content>
</entry>
<entry>
<title>all: use for-range with numeric</title>
<updated>2025-01-22T20:41:10Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2025-01-22T20:40:50Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=2a0694d2fa577574b505c4635eb8a824eaf88ddc'/>
<id>urn:sha1:2a0694d2fa577574b505c4635eb8a824eaf88ddc</id>
<content type='text'>
Go 1.22 now support for-range on numeric value.
</content>
</entry>
<entry>
<title>all: comply with linter recommendations #3</title>
<updated>2024-03-05T09:21:51Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-03-03T20:01:45Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=7ec26b9f98b5af909e935b69fbaa1db17d89cf6a'/>
<id>urn:sha1:7ec26b9f98b5af909e935b69fbaa1db17d89cf6a</id>
<content type='text'>
For HTTP server that use TLS, set the minimum TLS version and
ReadHeaderTimeout to mitigate slowloris attack.

For HTTP client or server that parameterize the use of InsecureSkipVerify,
annotate the line with "nolint:gosec" to allow the code pass the check.

Library that still use sha1, in example in DKIM and TOTP, skip the
warnings by annotating the line with "nolint:gosec".

A pointer variable now allocated their address before assigning its
value.

Any error that returned now wrapped using "%w".
Also, replace error checking using [errors.Is] or [errors.As] instead of
using equal or not-equal operators.

In "lib/http", replace any usage of "math/rand" with "crypto/rand".

Any call of [math/big.Rat.SetString] now annotated with "nolint:gosec"
since its false positive, the issue has been fixed in Go &gt;= 1.17.7.

Any switch case that does not cover the rest of the possible values now
handled by adding the cases or by replacing the "default" case with
the rest of values.
</content>
</entry>
<entry>
<title>all: comply with linter recommendations #2</title>
<updated>2024-03-05T07:53:12Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-03-02T21:59:34Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=2fa7605727e90ca323b7b24168632e485d74c583'/>
<id>urn:sha1:2fa7605727e90ca323b7b24168632e485d74c583</id>
<content type='text'>
HTTP request now implicitly create request with context.

Any false positive related to not closing HTTP response body has been
annotated with "nolint:bodyclose".

In the example code, use consistent "// Output:" comment format, by
prefixing with single space.
Any comment on code now also prefixing with single space.

An error returned without variables now use [errors.New] instead of
[fmt.Errorf].
Any error returned using [fmt.Errorf] now wrapped using "%w" instead of
"%s".
Also, replace error checking using [errors.Is] or [errors.As], instead
of using equal/not-equal operator.

Any statement like "x = x OP y" now replaced with "x OP= y".
Also, swap statement is simplified using "x, y = y, x".
Any switch statement with single case now replaced with if-condition.

Any call to defer on function or program that call [os.Exit], now
replaced by calling the deferred function directly.

Any if-else condition now replaced with switch statement, if possible.
</content>
</entry>
<entry>
<title>all: move the repository to "git.sr.ht/~shulhan/pakakeh.go"</title>
<updated>2024-03-02T08:59:46Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-03-01T20:07:33Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=901c9803e6f93e0d5ee282f4061309022c46f490'/>
<id>urn:sha1:901c9803e6f93e0d5ee282f4061309022c46f490</id>
<content type='text'>
There are several reasons that why we move from github.com.

First, related to the name of package.
We accidentally name the package with "share" a common word in English
that does not reflect the content of repository.
By moving to other repository, we can rename it to better and unique
name, in this "pakakeh.go".
Pakakeh is Minang word for tools, and ".go" suffix indicate that the
repository related to Go programming language.

Second, supporting open source.
The new repository is hosted under sourcehut.org, the founder is known
to support open source, and all their services are licensed under AGPL,
unlike GitHub that are closed sources.

Third, regarding GitHub CoPilot.
The GitHub Terms of Service [1], allow any public content that are hosted
there granted them to parse the content.
On one side, GitHub helps and flourish the open source, but on another
side have an issues regarding scraping the copyleft license [2].

[1]: https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#4-license-grant-to-us
[2]: https://githubcopilotinvestigation.com
</content>
</entry>
<entry>
<title>lib/git: replace lib/test/mock with bytes.Buffer</title>
<updated>2023-09-09T08:38:20Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-09-09T08:38:20Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=b71b230bdb378c6fb0fedd3faf37211f11afe530'/>
<id>urn:sha1:b71b230bdb378c6fb0fedd3faf37211f11afe530</id>
<content type='text'>
This changes require changing the internal type of _stdout and _stderr
from *os.File to io.Reader.

The reason of replacing lib/test/mock is to minimize read/write to file,
since mock.Stdin/Stderr is a temporary files.
</content>
</entry>
</feed>
