Live data from Hacker News

Notes on the Go translation of Reposurgeon (2020)

gitlab.com

151–155 of 155 posts

Re: Notes on the Go translation of Reposurgeon (2020)

#151
post #124

Earlier quoted context omitted.

It's a spectrum, though. A language can be between 0 expressiveness (Go) and 100 expressiveness (Perl, maybe Lisps), and claiming that the only way to avoid the mysterious evil team member who will wreck your codebase is to patronizingly limit them "for their own sake" is insulting

Often times the developers moaning about complex code basically learned if statements and for loops and then were done learning. But we still have to write code that these people understand. It makes no damn sense. Sometimes, sure, people write horribly complex code, but sometimes it's just developers who have stopped learning. They see something that isn't immediately familiar and discard it as too complex and make…

This is a mischaracterization. We write simple code not for simple people, but because grokking gratuitously abstract code isn't a good use of anyone's cognitive resources--no matter how smart you are, you will have more mental capacity to put toward real problems if you're working in a simple codebase rather than an unnecessarily abstract codebase.

Re: Notes on the Go translation of Reposurgeon (2020)

#152
post #145

Earlier quoted context omitted.

This is fine, in moderation! I'm objecting to the linter tool itself being configurable.

Golint is the worst precisely because it isn’t configurable, and some of the things it looks for are idiotic. “should replace i += 1 with i++” is probably the worst advice I have ever received.

If a linter is configurable it is no longer a linter.

Re: Notes on the Go translation of Reposurgeon (2020)

#153
post #146
post #56

Reposurgeon was a pretty enticing option for us, as we're currently in the migration of SVN to Git, and the string of tools we have is kind of complicated to explain to newcomers. Currently the workflow is svn-all-fast-export (SVN to Git) -> git filter-repo (trim content from the repository) -> Git LFS (store large files out-of-band), where each stage has to be manually tested and written, and then hopefully put into…

We’d be interested in hearing more about your situation, so that we can further improve Reposurgeon. If you can profile it as it reads your svn dump (using the `profile start` and `profile save` commands), it could really help us out. How many commits does your repository have? The largest one we’ve successfully converted from SVN to Git ourselves was 287k commits.

Sorry for the late reply, but:

1. I'll try doing some profiling and see what happens

2. The latest repository I tried to import has 671,190 revisions

Re: Notes on the Go translation of Reposurgeon (2020)

#154
post #146

Earlier quoted context omitted.

We’d be interested in hearing more about your situation, so that we can further improve Reposurgeon. If you can profile it as it reads your svn dump (using the `profile start` and `profile save` commands), it could really help us out. How many commits does your repository have? The largest one we’ve successfully converted from SVN to Git ourselves was 287k commits.

Sorry for the late reply, but: 1. I'll try doing some profiling and see what happens 2. The latest repository I tried to import has 671,190 revisions

Wow. That is a huge repository.

You can also force it to write all file content (blobs) out to temporary files rather than keeping them in memory by reading the stream from standard input:

   reposurgeon "read -" … 
That will be slower and use more disk space, but maybe it will fit.

Re: Notes on the Go translation of Reposurgeon (2020)

#155
post #154

Earlier quoted context omitted.

Sorry for the late reply, but: 1. I'll try doing some profiling and see what happens 2. The latest repository I tried to import has 671,190 revisions

Wow. That is a huge repository. You can also force it to write all file content (blobs) out to temporary files rather than keeping them in memory by reading the stream from standard input: reposurgeon "read -" … That will be slower and use more disk space, but maybe it will fit.

Thanks for the suggestions, I'll give that a try!

And yes, some of our repositories are huge. This one is about 240 GB, and comprises multiple projects/products.

Our "most important" repository is only 313,000 revisions, but those revisions take up 93 GB, so it's a not-insubstantial repository as well.

Post reply on HN