[Geany-Devel] [Geany-devel] Separating session file lists from config (again)

Lex Trotman elextr at xxxxx
Mon Nov 18 09:12:58 UTC 2013


>
>
> Reviving this old thread because the annual discussion naturally came up
> again this year.
>
>
It must be the change of season that triggers it, and it wasn't even one of
the usual suspects this time :-)


> Your proposal lists issues that are rather orthogonal to separating the
> session file list, thus I think these should be dealt with later. As a
> first step I would propose we split out the session file lists to separate
> files (normal session: in the same folder as geany.conf, for projects in
> the same folder as $project.geany). This should solve the problem checking
> project files in as well as enabling to sync geany.conf across machines
> without affecting opened files.
>
> If one made such a patch, would it be accepted? It should be relatively
> trivial, only complicated by backward compat code to read session
> informations from the old location.
>

I think we got fairly close to an agreed solution on IRC, but I don't think
there was an exact common understanding.  Since the IRC discussion was
fairly noisy (communication wise) I have tried to describe my best
understanding of the most agreed with solution.

Please note this is what I think the majority agreed with, its not
necessarily any individuals solution.

The basic idea is to separate the user session files list into a separate
file.  The discussion applied mostly to the projects, since only the OP who
triggered the discussion is trying to store user config in a VCS.  For the
user config it is expected that simply having a session.conf file
containing the session specific data (files list, open project at least)
stored in the same directory as geany.conf is a suitable solution.

Since there are lots of project config files, and they can be stored in
~/projects or in the project trees (or anywhere) and because existing
projects are single files the solution is more complex.  The majority
agreed:

1. instead of being a single file, the project config becomes a directory
like the user config

2. various names were suggested, but no clear winner emerged, suggestions
included $project.geany, geany.$project and $project.conf.d.  Objections
included $project.geany is the existing name and may be confused or
overwritten by an old version of geany and $project.conf.d is ugly.  Making
it a define was suggested, which is fine during development, but a
permanent solution must be selected prior to merging the change.

3. initially that directory contains the config file (which is the existing
project file without the session files list) and the session files list
file.  Retaining the $project.geany name for the config file or changing it
to geany.conf to match the user config were suggested, no conclusion was
reached.  Similarly using $project.session.conf or just session.conf were
suggested for the session file.

4. over time more data can be added to the project directory, possibly
becoming pretty much the same as the user config directory.

5. the user is responsible for setting their .gitignore (or equivalent for
other VCSes) to ignore the session file.

I say again, this may not be anybodys exact solution, but its what I think
was agreed by the majority.  If you think I have misunderstood then shout,
but don't complain just because its not your personal solution.   I am
posting this because I don't think we all had the same understanding of
what we were agreeing.

Now for the further discussions.

Assuming the above to be correct I suggest:

1. Project and user session file formats should match to allow the same
code to store both.  The fact that the storing the current project in the
project session file is not needed doesn't matter.

2. For user config, keeping the same name for geany.conf is ok since a new
geany can simply ignore session info in the geany.conf file if the
session.conf is present.  Accidently overwriting geany.conf with an old
version won't damage anything but won't update session.conf.

3. For project config the new version should use names that don't match
existing project file names since the new config is a directory and an old
geany trying to read it would get very confused.  An old geany may also
overwrite the directory with a file if its the same name.  Also I see no
point in including the project name on the config and session files inside
the project config directory, its just more filepath manipulation needed
for no gain, use the fixed names project.conf and session.conf.  The
project config file should not be geany.conf as it is currently not the
same format.

4. Although partly orthogonal to the current discussion, we should find any
places in Geany where config is not stored on each change and fix them so
the now separate config file does not need to be saved at quit.  So only
the session file needs saving on quit and we don't lose config changes when
the desktop shuts Geany down abruptly (or the rare crash :-).

Personally I would be willing to accept the above solution despite my
misgivings about the need to .gitignore the session file and previous
attempts to work around that need.

Cheers
Lex


> Best regards.
>
> _______________________________________________
> Devel mailing list
> Devel at lists.geany.org
> https://lists.geany.org/cgi-bin/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geany.org/pipermail/devel/attachments/20131118/636926e7/attachment.html>


More information about the Devel mailing list