Sysadmin Load Reduction: Subversion Infrastructure

Alexander Potashev aspotashev at gmail.com
Mon Nov 11 20:59:17 GMT 2019


пн, 11 нояб. 2019 г. в 17:02, Luigi Toscano <luigi.toscano at tiscali.it>:
>
> Alexander Potashev ha scritto:
> > вс, 10 нояб. 2019 г. в 18:09, Luigi Toscano <luigi.toscano at tiscali.it>:
> >> Most of translators are not so technical as the developers. And even
> >> developers can shoot them in the foot with git, I see many issues coming from
> >> unwanted merges.
> >
> > We can block unwanted merged on the server with a Git hook like this:
> > https://github.com/FabreFrederic/git-hook-pre-receive-reject-merge-commit
>
> When I talk about local merges, I foresee a bit of mess when resolving a merge
> locally, which may result in proper commits whose content has an invalid syntax.

I don't get it.

If you have conflicting changes, either with SVN or Git, you have to
resolve the conflict manually. Of course it's easy to break the syntax
while doing so, however SVN does not make it any easier than Git.

> > Cloning the whole repo would be too much for some translators, however
> > the new Git feature "git clone --filter" might be a solution:
> > https://unix.stackexchange.com/a/468182
>
> Documentation does not seem to help (or at least I don't seem to find it in
> the man pages for git 2.24). Do you know how it could filter just some
> directories? It seems more focused on filtering by object type.

OK, I now tried this approach with Git 2.23 (see attached log) and
found horrible problems that make it basically unusable:

 1. git-checkout downloads each file in a new SSH connection. It make
the download really slow: less than 1 file per second in my setup.
That means downloading of translations into one language would take
more than an hour.

 2. git-status silently tries to download to whole Git repository.

 3. git-commit tries to download some files one by one again.

> > Shall I create a new Phabricator task "[WIP] Migrate translations from
> > SVN to Git" so we can put relevant ideas in one place?
>
> I don't know. For me having a board and tasks (it's not just a single task,
> it's an entire project) sounds like there is something that can be
> implemented, and I don't think it's the case.

The tag [WIP] would hint that we are not sure if it can be
implemented. We can even name it "Reasons why translations cannot
migrate to Git", if necessary.

> I think we should first document all the answers to this recurring questions
> first.

Agreed.

IMO a Phabricator "task" would be the most appropriate place to
document these answers because we don't have better options: Community
Wiki and Nextcloud are not very suitable for discussions.

-- 
Alexander Potashev
-------------- next part --------------
[aspotashev at candy kde-git]$ git clone --no-checkout --filter=blob:none "aspotashev at 10.8.0.4:/home/aspotashev/kde-git/krita/.git" krita
Cloning into 'krita'...
remote: Enumerating objects: 321084, done.
remote: Counting objects: 100% (321084/321084), done.
remote: Compressing objects: 100% (64401/64401), done.                                  
remote: Total 321084 (delta 257379), reused 319306 (delta 255807)
Receiving objects: 100% (321084/321084), 36.15 MiB | 593.00 KiB/s, done.
Resolving deltas: 100% (257379/257379), done.
[aspotashev at candy kde-git]$ cd krita/
[aspotashev at candy krita]$ git checkout master -- cmake/
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 445 bytes | 445.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 294 bytes | 294.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 1020 bytes | 1020.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 730 bytes | 730.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 3.42 KiB | 3.42 MiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 362 bytes | 362.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 358 bytes | 358.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 465 bytes | 465.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 416 bytes | 416.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 527 bytes | 527.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 183 bytes | 183.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 534 bytes | 534.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 622 bytes | 622.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 584 bytes | 584.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 403 bytes | 403.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 400 bytes | 400.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 503 bytes | 503.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 119 bytes | 119.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 221 bytes | 221.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 595 bytes | 595.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 753 bytes | 753.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 1.70 KiB | 1.70 MiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 1.01 KiB | 1.01 MiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 683 bytes | 683.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 937 bytes | 937.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 568 bytes | 568.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 966 bytes | 483.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 1.81 KiB | 1.81 MiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 989 bytes | 989.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 806 bytes | 806.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 926 bytes | 926.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 444 bytes | 444.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 1000 bytes | 1000.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 594 bytes | 297.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 959 bytes | 479.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 658 bytes | 329.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 1.06 KiB | 541.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 325 bytes | 325.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 680 bytes | 340.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 1.81 KiB | 924.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 732 bytes | 366.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 1.01 KiB | 516.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 1.66 KiB | 566.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 886 bytes | 177.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 1.24 KiB | 423.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 149 bytes | 74.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0)
Receiving objects: 100% (1/1), 1.20 KiB | 410.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 1.86 KiB | 950.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 166 bytes | 83.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 177 bytes | 177.00 KiB/s, done.
[aspotashev at candy krita]$ ls -a
.  ..  .git  cmake
[aspotashev at candy krita]$ du -sh .git cmake  
46M     .git
248K    cmake
[aspotashev at candy krita]$


More information about the kde-community mailing list