View Issue Details

IDProjectCategoryView StatusLast Update
0017177ScribusWebsitepublic2026-04-01 15:23
ReporterJLuc Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Summary0017177: where is svn ?
Descriptionissues :

scribus.net site doesnt provide a visible link to the source repo. The "Contribute" page states "Check out Scribus code from Scribus Subversion repository and start hacking" but doesnt give a link to the svn repo.

https://svn.scribus.net is a dead end.

todo :

https://svn.scribus.net should be fixed
(or maybe url has changed ?)

The "Contribute" page should provide a link to the svn repo.



Additional Informationhttps://www.scribus.net/scribus-1-6-1-released mentions svn://scribus.net

but isnt there any http readable websvn repo anymore ?
TagsNo tags attached.
PatchNo

Activities

ale

2024-03-15 21:44

manager   ~0051042

Last edited: 2024-03-16 07:59

i'm not sure that there is still a need for a websvn.

in the last few years, i've only seen one person completely lost, who did not know how to handle svn... and was relieved to learn that he could just use the git mirror.
all the other could easily find one of the mirrors by themselves!
and the mirrors have a very advanced webview! (online IDE included!)

the world has moved on, most of the younger generation do not even know, that there could be something else than git...

cbradney

2024-03-17 20:22

administrator   ~0051049

WebSVN is down due to load on the servers. Too many web crawlers trying to crawl SVN forever slowing down the main sites.

JLuc

2024-03-18 14:26

developer   ~0051050

I've noticed scribus.net has been quite slow recently... so i can understand the need to bring websvn down, all the more since as @ale says, github and gitlab repo are correct alternatives.

Then remains 2 issues :
- citing svn:scribus.net url on the "contribute" page
- linking to some public git repo that enables web browsing on the "contribute page" with the warning that it doesnt accepts PRs... and explaining how to PR or linking to explanations on how to contribute

nitramr

2024-03-18 17:16

developer   ~0051051

I know we've already discussed moving to GitHub, GitLab, or another service. I remember there was some concern about the legal aspects of hosting in a non-European data center.

In general, I think it might be a good idea to outsource the hosting of the code so that we have more capacity to focus on Scribus development. If there are plans to use a Git-based system to host data in Europe, we could check https://codeberg.org
They could take care of infrastructure maintenance. I guess they have some bot / crawler protection too.

But, as with everything, you have to find someone to set up the service. Unfortunately, I lack the expertise for this.

ale

2024-03-20 15:57

manager   ~0051054

Last edited: 2024-03-20 15:58

tldr: an official git.scribus.net and an offiical mirror on github/gitlab/...
svn (if needs to survive) would be only private

---

as far as i know there are two people who currently commit to svn.
one is willing to switch to git, the other one (the last time i asked) is (was) not.

my suggestion:

- there should be git.scribus.net .

- it seems to be rather easy to serve a git repository:
  here are two random tutorials (one of them being the official one):
  - https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
  - https://www.howtogeek.com/devops/how-to-set-up-a-private-git-server/

- git.scribus.net should be the official scribus git repository.
  i don't think scribus need to keep a public svn repository.
  so it probably should be the officioal scribus repository.

- as long as the two developers with commit rights want to use svn, they should sync svn with the git repository each time they make a commit
  (it's basically the same script as i'm using for syncing the scribus svn with github: it's painless)

- one of the existing providers should be picked as the *official mirror* (for the sake of being visible, it should be github; personally, i would go for gitlab) and kept in sync with the official git server at each commit (that is also being done with the script mentioned above).

- it would be a dream if we could find a way to accept pull requests and do code reviews on the "git platform"
  (i don't think it's possible as long as svn is the pipe... there might be ways everybody uses git).

i'm not really hot about installing a git platform (gitlab, gitea or similar) on the scribus.net ... since it would mean more admin work and a bigger attack surface for the server. ... even if that would be the best solution in a perfect world)

ale

2024-03-20 16:56

manager   ~0051055

Last edited: 2024-03-20 17:01

it seems that with gitlab (and probably also github) it is possible to accept a merge request into a new branch and then pull that one into the main code:

https://stackoverflow.com/questions/56486140/gitlab-merge-request-into-github

(the question is about gitlab to github, but it should be possible for any mirrored git repository; it will probaly also work with svn with a bit of effort (downloading the diff as a file and applying to to svn)... but the name of the contributor will be lost)

luzpaz

2024-11-18 13:41

reporter   ~0051586

Some observations about contributing:
- patches need to be generated
- said patches need to be submitted to bugtracker
- bugtracker is very slow. Page load times are atrocious.
Just these steps in themselves are a barrier for contribution

ale

2026-04-01 12:16

manager   ~0053593

Last edited: 2026-04-01 12:20

Coming back to this old topic.

From time to time, it would be really hopeful to know if there have been any commits to the Scribus trunk.

Currently, the continually increasing waves of bots crawling the web for code, make a self hostted websvn or git platform almost impossible.

Here a few possible ways for improving the situation:

- since Scribus code is already on Sourceforge we could have an SVN mirror there.
- even better: we could have Git mirror on Sourceforge
- or if needs to be on the own infrastructure, I'm attaching a Python script that creates a static HTML page with the latest 10 commits.

The sync with Sourceforge or the Python script could be added to the steps that publishes the Scribus to the public SVN server.

I'm attaching the Python script, with its current result as HTML file.

P.S.: the index.html file could be uploaded to scribus.net/websvn/index.html ...

ale

2026-04-01 12:17

manager   ~0053595

svn_log.py (3,004 bytes)   
#!/usr/bin/env python3

import os
import subprocess
import xml.etree.ElementTree as ET
import datetime
import re

"""
Create an index.html file with the latest 10 commits to the Scribus trunk.

By default the list only shows the basic commit data.
Clicking on the number of changed files, shows the list of affected files.

The script can be customized with the following environment variables:

- SVN_HTML_TARGET: the HTML file to be created (by default './index.html').
- SVN_EXECUTABLE: the svn executable (by default 'svn')
- SVN_SCRIBUS_REPOSITORY: the path to the Scribus code (by default the current directory)

"""

# svn_executable = '/home/ale/bin/tmp/t/usr/bin/svn'
# scribus_repository = '/tmp/scribus'

HTML_TARGET = os.environ.get('SVN_HTML_TARGET', 'index.html')
SVN_EXECUTABLE = os.environ.get('SVN_EXECUTABLE', 'svn')
SCRIBUS_REPOSITORY = os.environ.get('SVN_SCRIBUS_REPOSITORY', '.')

def main():
    print(f'Creating {HTML_TARGET} from {SCRIBUS_REPOSITORY}')
    process = subprocess.run([SVN_EXECUTABLE, 'log', '-l', '10', '--xml', '-v'], cwd=SCRIBUS_REPOSITORY, capture_output=True)
    root_log = ET.fromstring(process.stdout)
    log_output = """
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Scribus | Latest commits</title>
        <style>
        p.commit {margin-bottom: 0px;}
        p.paths {margin-top: 0px; margin-bottom: 0px;}
        ul {margin-top: 0px;}
        ul.hidden {display: none;}
        </style>
        <script>
        document.addEventListener("DOMContentLoaded", function(){
          for (let p of document.getElementsByClassName('paths') ) {
            p.onclick = function() {
              this.nextElementSibling.classList.toggle('hidden');
            }
          }
        });
        </script>
      </head>
      <body>
      <h1>Scribus SVN Log</h1>
      <p>Due to the excessive load generated by rogue web crawlers, it's currently not possible to self-host a web view of the Scribus code.<br>
      This log summarizes the latest commits to the Scribus SVN server (<kbd>svn://scribus.net/trunk/Scribus</kbd>).</p>
      <hr>
    """
    for child_logentry in root_log:
        revision = child_logentry.get('revision')
        author = child_logentry.find('author').text
        date = datetime.datetime.fromisoformat(re.sub(r'\.\d+Z$', 'Z', child_logentry.find('date').text))
        message = child_logentry.find('msg').text.strip()
        commit = f'<p class="commit">{revision} | {author} | {date}\n{message}</p>'
        paths = []
        for child_path in child_logentry.find('paths'):
            paths.append(child_path.text)
        if paths:
            commit += f'\n<p class="paths">{len(paths)} file(s) changed »</p>\n<ul class="hidden">\n<li>{"</li>\n<li>".join(paths)}</li>\n</ul>'
        log_output += commit
    log_output += """
      </body>
    </html>
    """
    with open(HTML_TARGET, 'w') as f:
      f.write(log_output)

if __name__ == '__main__':
    main()
svn_log.py (3,004 bytes)   

ale

2026-04-01 12:19

manager   ~0053597

... Since I can't upload HTML files, I've changed the extension to .txt...
index.txt (9,791 bytes)   
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Scribus | Latest commits</title>
        <style>
        p.commit {margin-bottom: 0px;}
        p.paths {margin-top: 0px; margin-bottom: 0px;}
        ul {margin-top: 0px;}
        ul.hidden {display: none;}
        </style>
        <script>
        document.addEventListener("DOMContentLoaded", function(){
          for (let p of document.getElementsByClassName('paths') ) {
            p.onclick = function() {
              this.nextElementSibling.classList.toggle('hidden');
            }
          }
        });
        </script>
      </head>
      <body>
      <h1>Scribus SVN Log</h1>
      <p>Due to the excessive load generated by rogue web crawlers, it's currently not possible to self-host a web view of the Scribus code.<br>
      This log summarizes the latest commits to the Scribus SVN server (<kbd>svn://scribus.net/trunk/Scribus</kbd>).</p>
      <hr>
    <p class="commit">27489 | craig | 2026-03-29 19:36:21+00:00
Reindent styleitem.h</p>
<p class="paths">1 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/scribus/styleitem.h</li>
</ul><p class="commit">27488 | craig | 2026-03-29 19:29:58+00:00
Bump ChangeLog and about date</p>
<p class="paths">2 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/ChangeLog</li>
<li>/trunk/Scribus/scribus/ui/about.cpp</li>
</ul><p class="commit">27487 | craig | 2026-03-29 19:29:38+00:00
Update to barcode generator</p>
<p class="paths">6 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/CMakeLists.txt</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcode_ui.json</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegenerator.cpp</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegenerator.h</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegenerator.ui</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/bwipp/barcode.ps.src</li>
</ul><p class="commit">27486 | craig | 2026-03-28 12:40:20+00:00
Bump pro file</p>
<p class="paths">1 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/Scribus.pro</li>
</ul><p class="commit">27485 | craig | 2026-03-28 12:34:58+00:00
Major updates for UI for barcode plugin</p>
<p class="paths">14 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/CMakeLists.txt</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcode.cpp</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcode_ui.json</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegenerator.cpp</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegenerator.h</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegenerator.ui</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegeneratorrenderthread.cpp</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/barcodegeneratorrenderthread.h</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/bwipp</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/bwipp/barcode.ps</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/bwipp/postscriptbarcode.c</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/bwipp/postscriptbarcode.h</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/bwipp/postscriptbarcode.hpp</li>
<li>/trunk/Scribus/scribus/plugins/barcodegenerator/bwipp/postscriptbarcode_private.h</li>
</ul><p class="commit">27484 | craig | 2026-03-27 21:55:43+00:00
Bump TS files</p>
<p class="paths">75 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/resources/translations/scribus.af.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ar.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.az.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.be.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.bg.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.bn_IN.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.br.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ca.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.cs_CZ.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.cy.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.da_DK.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.de.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.de_1901.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.de_CH.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.el.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.en_AU.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.en_GB.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.en_US.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.eo.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.es_AR.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.es_CO.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.es_ES.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.es_MX.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.es_VE.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.et.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.eu.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.fa_IR.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.fi.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.fr.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.gl.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.he_IL.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.hi_IN.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.hr_HR.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.hu.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ia.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.id.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.it.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ja.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.kab.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.kn_IN.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ko.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.lb.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.lt_LT.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ml.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.mn_MN.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ms_MY.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.nb_NO.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.nl.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.nn_NO.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.oc.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.pa.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.pa_IN.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.pl_PL.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.pms.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.pt_BR.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.pt_PT.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ro.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ru.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.sa.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.si.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.sk_SK.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.sl.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.so.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.sq.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.sr.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.sv.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.ta.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.te.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.th_TH.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.tr.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.tt.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.uk.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.untranslated.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.zh_CN.ts</li>
<li>/trunk/Scribus/resources/translations/scribus.zh_TW.ts</li>
</ul><p class="commit">27483 | craig | 2026-03-27 21:45:28+00:00
Add in QPlatformTheme texts to translationdummy to allow standard button
translations for those not supplied with Qt</p>
<p class="paths">2 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/Scribus.pro</li>
<li>/trunk/Scribus/scribus/translationdummy.cpp</li>
</ul><p class="commit">27482 | craig | 2026-03-26 22:04:25+00:00
#17784: Real-time spell check should ignore soft hyphen (and other non-
printable characters). Move call to refresh spell check due to
difference in length of story text and stripped text</p>
<p class="paths">5 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/scribus/pageitem_textframe.cpp</li>
<li>/trunk/Scribus/scribus/text/storytextsnapshot.cpp</li>
<li>/trunk/Scribus/scribus/text/storytextsnapshot.h</li>
<li>/trunk/Scribus/scribus/textframespellchecker.cpp</li>
<li>/trunk/Scribus/scribus/textframespellchecker.h</li>
</ul><p class="commit">27481 | jghali | 2026-03-25 19:44:48+00:00
Fix text underline dependency on text frame dash array when exporting to PDF</p>
<p class="paths">1 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/scribus/pdflib_core.cpp</li>
</ul><p class="commit">27479 | jghali | 2026-03-24 22:12:00+00:00
Fix text stroke dependency on text frame dash array when exporting to PDF</p>
<p class="paths">1 file(s) changed »</p>
<ul class="hidden">
<li>/trunk/Scribus/scribus/pdflib_core.cpp</li>
</ul>
      </body>
    </html>
    
index.txt (9,791 bytes)   

JLuc

2026-04-01 15:23

developer   ~0053598

How about favouring https://codeberg.org ?
It looks more aligned.

Issue History

Date Modified Username Field Change
2024-03-15 18:49 JLuc New Issue
2024-03-15 18:53 JLuc Additional Information Updated
2024-03-15 21:44 ale Note Added: 0051042
2024-03-16 07:59 ale Note Edited: 0051042
2024-03-17 20:22 cbradney Note Added: 0051049
2024-03-18 14:26 JLuc Note Added: 0051050
2024-03-18 17:16 nitramr Note Added: 0051051
2024-03-20 15:57 ale Note Added: 0051054
2024-03-20 15:58 ale Note Edited: 0051054
2024-03-20 16:56 ale Note Added: 0051055
2024-03-20 17:01 ale Note Edited: 0051055
2024-11-18 13:41 luzpaz Note Added: 0051586
2026-04-01 12:16 ale Note Added: 0053593
2026-04-01 12:17 ale Note Added: 0053595
2026-04-01 12:17 ale File Added: svn_log.py
2026-04-01 12:19 ale Note Added: 0053597
2026-04-01 12:19 ale File Added: index.txt
2026-04-01 12:20 ale Note Edited: 0053593
2026-04-01 15:23 JLuc Note Added: 0053598