darcs

Issue 2539 export, tags, and optimize reorder

Title export, tags, and optimize reorder
Priority Status resolved
Milestone Resolved in
Superseder Nosy List attila.lendvai
Assigned To
Topics Git

Created on 2017-07-21.13:52:51 by attila.lendvai, last changed 2023-08-24.20:36:44 by bfrk.

Messages
msg19493 (view) Author: attila.lendvai Date: 2017-07-21.13:52:48
1. the situation

i'm converting a darcs repo to git using `darcs convert export`. this repo 
has tags. tags are in a "random" position in the darcs log, i.e. their 
position depends on when i pulled them into my own repo.

the resulting git repo has some git tags, and some "comment commits" that 
just say in their message "TAG foo-bar".

now, AFAIU, `darcs convert export` generates its output based on the order 
of the patches in the darcs log, and only generates a tag in its output for 
a darcs tag when that tag is exactly at such a position in the darcs log 
where all of the tag's dependencies are before the tag in the log, and 
nothing else is; i.e. when the tag in the output would represent the same 
repo state as the darcs tag.

i tried to run a `darcs optimize reorder`, but it doesn't seem to move my 
tags.

i understand that this kind of ordering of the tags is not always possible, 
but it is often possible.


2. what i expect

either `darcs convert export` could pay attention to this, and try to 
reorder tags before the export to a position of a "minimal height" in the 
darcs log... or maybe `darcs optimize reorder` could do that, and people 
would be advised to run it before export.

3. versions

$ darcs --exact-version
darcs compiled on Oct 29 2016, at 06:09:56

Context:

[TAG 2.12.4
Guillaume Hoffmann <guillaumh@gmail.com>**20160914143914
 Ignore-this: fee5b93a45e3a175e63e6fdb837ec4dc
] 

Compiled with:

HTTP-4000.3.3
array-0.5.1.1
async-2.1.0
attoparsec-0.13.1.0
base-4.9.0.0
base16-bytestring-0.1.1.6
binary-0.8.3.0
bytestring-0.10.8.1
containers-0.5.7.1
cryptohash-0.11.9
data-ordlist-0.4.7.0
directory-1.2.6.2
fgl-5.5.3.0
filepath-1.4.1.0
graphviz-2999.18.1.2
hashable-1.2.4.0
haskeline-0.7.2.3
html-1.0.1.2
mmap-0.5.9
mtl-2.2.1
network-2.6.3.1
network-uri-2.6.1.0
old-time-1.1.0.3
parsec-3.1.11
process-1.4.2.0
random-1.1
regex-applicative-0.3.3
regex-compat-tdfa-0.95.1.4
sandi-0.4.0
tar-0.5.0.3
terminfo-0.4.0.2
text-1.2.2.1
time-1.6.0.1
transformers-0.5.2.0
transformers-compat-0.5.1.4
unix-2.7.2.0
unix-compat-0.4.2.0
utf8-string-1.0.1.1
vector-0.11.0.0
zip-archive-0.3.0.5
zlib-0.6.1.1

$ uname -a
Linux lelap 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2 (2017-06-12) x86_64 
GNU/Linux
msg19502 (view) Author: gh Date: 2017-07-31.02:33:34
This seems very related to http://bugs.darcs.net/issue2466 (`darcs
convert export` turns some Darcs tags into Git comments insead of tags).
msg22107 (view) Author: bfrk Date: 2020-06-22.05:49:08
Independent of the issues with convert export (which has lots of 
problems), I think something akin to a "deep" 'optimize reorder' 
command could be useful. Currently, 'optimize reorder' merely 
reorders patches so that the latest tag becomes clean (if possible, 
that is, without making any earlier clean tags unclean).

This is not completely trivial to design. As noted by the OP, in 
general not all tags can be made clean: if tags were recorded in 
different branches, then neither may depend on the other. So we need 
a metric to decide which one comes first (and thus can be made clean) 
and which one comes later (and therefore must remain unclean). What 
exactly do we want to minimize here?
msg23697 (view) Author: bfrk Date: 2023-08-24.20:36:43
There is now an option --deep for the `optimize reorder` command. With 
this you can make all tags in your repo "as clean as possible" before 
converting. This is not a complete fix since making all tags clean is 
impossible in general, but I think it is the best we can do.
History
Date User Action Args
2017-07-21 13:52:51attila.lendvaicreate
2017-07-31 02:33:36ghsettopic: + Git
messages: + msg19502
2020-06-22 05:49:11bfrksetmessages: + msg22107
2023-08-24 20:36:44bfrksetstatus: unknown -> resolved
messages: + msg23697