Tu as raison, c'est facile pour le premier, mais impossible à faire en C++ car il n'existe pas de valeur de type void. La question qui m'intéresse — par curiosité — est si le langage D répare cette defiscience de C++. c++
slot<int,int> c1(&f1,0);
slot<void,void> c2(&f2,/* valeur de type void */);
La méthode classique pour s'en tirer consiste à utiliser les spécialisations de templates.
La plupart des gens préfère quand même avoir la même timezone pour toutes les sessions d'un même ordinateur (graphique ou tty) et pour tous les utilisateurs…
Non, la plupart des gens préfèrent quand même avoir la même timezone dans une session donnée mais des timezone éventuellement différentes pour chaque session. En gros le schéma que fournit l'héritage de TZ par l'environnement
Mmmh, c'est pour bricoler des trucs avec des templates? Parce que je ne vois pas trop ce que tu peux faire du x, la variable n'a aucun sens, si?
La variable n'a aucun sens dans le cas de void, mais dans les autres cas si, donc justement cela induit une exception dans le système des types qui est tout à fait nuisible à la programmation générique.
Par exemple, essayons de définir un slot qui contient une fonction et une valeur sur laquelle appeler la fonction.
La première utilisation slot<int,int> fonctionne tandis que slot<void,void> explose!
L'exemple de la définition de slot est très instructif parceque si on essaie d'en faire une solution robuste et générale, il faut:
— utiliser des types proxies (des templates dont le seul rôle est de définir des types) parcequ'on passe les int, les pointeurs et les références par valeur mais les valeurs de la plupart des autres types par référence;
— utiliser des call proxies pour encapsuler les appels à f(x) (à cause du void);
— utiliser des constructeurs divers et variés parcequ'on a bien envie de pouvoir passer des pointeurs vers membres dans nos slots.
Au final on arrive à un code très long et pas très lisible, pour faire correctement ce qui dans le cas général prend 6 lignes.
Parmi les 1001 aspects du C++ qui sont très pénibles quand on programme avec, il y a notamment le fait que:
void est un type incomplet, en particulier on ne peut pas écrire void x pour déclarer un argument de type void à une fonction;
les pointeurs vers fonction membre ne peuvent assignés aux pointeurs vers fonctions membres constantes(!);
l'algèbre des types est difficile à manipuler parceque si on connaît le type pointeur vers fonction on ne peut pas en déduire le type pointeur vers fonction constante simplement.
Ces points sont incroyablement agaçants lorsqu'on fait de la programmation générique. Qu'en est-il en D?
Spécification de surcharge de méthode avec override
Je pense que tu t'es mal exprimé, surcharge (polysémie) et redéfinition, ce n'est pas du tout la même chose!
Si en C++, et visiblement en D, on indique la capacité à lancer des exceptions (et lesquelles), c'est pour garantir un contrat.
Il me semble que les compilateurs C++ utilisent ces infos pour optimiser, pas pour faire de la vérification — il y a d'ailleurs une exception bad_exception qui signale les exceptions non prévues!
C'est très important pour une fonction utilisée dans un destructeur, par exemple. Et ça, le compilateur ne peut pas le deviner tout seul lors de la compilation de la fonction.
Théoriquement rien n'empêche le compilateur de le savoir, mais il faudrait avoir une notion de fichier objet pour les headers — pour retenir l'information calculée — qui devraient être distribués avec les bibliothèques. (Il faut connaître le header et le code pour faire la déduction correcte.)
Je n'ai pas vraiment vu de trains étrangers en gares françaises…
C'est parceque tu n'as pas bien regardé et que tu n'intéresses pas aux trains de marchandises.
Génial. Pour voyager c'est super.
Ce que je voulais souligner en parlant des trains de marchandises, c'est que dans les faits l'ouverture à la concurrence concerne essentiellement le frêt. On peut en retirer que des opérateurs de trains autres que la SNCF s'intéressent au réseau français en général mais pas au transport de personnes en particulier. Donc oui la concurrence est là, mais pour le transport de passagers, ne semble rien avoir à proposer de mieux que la SNCF.
Dans Unix il n'y a pas d'extension juste des suffixes (comme dans tous les mots). Le mot extension s'utilsie en principe uniquement pour les systèmes de fichiers FAT où les noms de fichiers faisaient 8.3 lettres — le `.' séparant la partie principale de son extension n'est pas stockée par le système, d'où le besoin n'un nom spécial pour indiquer cette séquence.
C'est marrant, ce sondage montre clairement pourquoi Linux ne perce pas dans le grand public!
Il faudrait une sondage supplémentaire pour demander aux gens comment ils font désinstaller un logiciel, avec une réponse spéciale «je formate mon HD et réinstalle Windows» — parceque parfois il n'y a pas d'autre choix!
Néanmoins, après plusieurs lignes de codes, je décide de changer la variable par défaut, a=1 dans ton exemple. Comment je fais pour répercuter ça partout ?
Il ne dit pas qu'il n'aime pas trop que le nom des variables apparaissent dans les applications partielles, ici?
Quel est le problème avec la SNCF au juste? Qu'est-ce qu'elle fait moins bien que ses homologues en Allemagne, en Angleterre (ah, ah, ah) ou aux USA (ah, ah, ah, ah, ah!)
Je n'ai pas vraiment vu de trains étrangers en gares françaises…
C'est parceque tu n'as pas bien regardé et que tu n'intéresses pas aux trains de marchandises.
Ça ferait du biens au prix il me semble.
Tu parles des prix des trajets locaux subventionnés par les régions, ou bien des prix des trajets nationaux qui sont moins chers que l'avion ou la voiture (pour une personne qui prend l'autoroute)?
(Ça me rappelle que quand il y a la queue à la pharmacie, personne ne râle, mais à la Poste, là c'est intolérable!)
Je rejoins les commentaires qui t'incitent plutôt à créer un objet encapsulant tes algorithmes, ce qui te permet d'obtenir le résultat attendu. Si tu tiens à l'évaluation partielle, voici une solution un peu moins compliquée que celle de Matthieu.
Quand je teste la conversion en djvu avec convert, le résultat est tout pixelisé…
Cela vient probablement de la `-density' du canvas sur lequel convert fait le dessin. Prendre une -density de 300, 600 ou 1200 pour avoir un meilleur résultat.
Chez moi j'utilise
convert -density 1200 fichier.pdf -monochrome bitonal-%05d.tiff
for bitonal in bitonal*.tiff; do
cjb2 "$bitonal" "${bitonal%.tiff}.djvu"
done
djvm -c /tmp/output.pdf *djvu
si elle était un jour contaminée, les évêques se joindraient sans problème aux autorités pour interdire d'en boire…
Je pense notamment aux évêques qui ont spontanément critiqué ce prêtre qui, il y a 2–3 ans, affirmait que le préservatif ne protégeait pas du SIDA car le virus était assez petit pour passer à travers la matière. L'affaire avait eu un petit retentissement national, et je ne me rappelle malheureusement pas qu'elle se soit conclue par un désavœu officiel de la position dudit prêtre par sa hiérarchie.
Ce propos me paraît contradictoire. Affirmer des choses sans plus les démontrer, n'est-ce pas là le propre de la foi ?
Pas du tout. La raison a essentiellement une fonction d'organisation des connaissances, mais pour commencer à organiser quoique ce soit, il faut bien des connaissances avec lesquelles commencer. Ces dernières sont invariablement fournies par l'intuition.
C'est le cas en mathématiques, où on choisit des axiomes et des modes de raisonnement qui nous paraissent en adéquation avec les inuitions qui nous viennent du monde. C'est aussi le cas en philosophie, par exemple lorsqu'on reconnaît que la raison seule est incapable de fonder la morale: dans un système de valeurs morales, la raison permet d'organiser les jugemements ou de dériver de nouveaux jugemements (tuer plusieurs personnes est probablement plus grave que tuer une seule personne qui à son tour est probablement moins grave que de voler une pomme ou pisser dans la piscine de son voisin) de façon cohérente avec avec les premiers jugements.
En revanche, s'il est exclu de tout démontrer — car cela ne semble pas possible — il n'est pas interdit d'argumenter sur le choix de ces axiomes, sans toutefois fournir de démonstration au sens technique du terme. Par exemple, remarquer que tel choix d'axiomes mathématiques aboutit à une teorie contradictoire ou que tels choix de valeurs morales ne permet pas de condamner le nazisme¹ peut mener vers une critique de ces choix.
La différence de taille entre science et religion est que dans un cas la critique des axiomes ou vérités premières est vivement encouragée (à condition d'avoir des arguments, tout de même!) dans l'autre absolument interdite, en tout cas en ce qui concerne le quidam.
¹ Ce n'est pas un point Godwin mais le sujet du livre «Droit naturel et Histoire» de Léo Strauss.
Comme j'utilise un vrai système d'exploitation (FreeBSD) il y a déjà un outil de sauvegarde simpliste mais robuste installé dessus. Mon schéma de sauvegarde consiste à faire une sauvegarde de niveau 0 quand ça me pète, une sauvegarde de niveau 1 tous les mois, et des sauvegardes de niveau 2-9 le reste du temps.
Cette transformation ne transforme correctement que les points du haut du motif, c'est à dire ceux qui se retrouveront pile sur la courbe. Les points du bas suivent une autre courbe/équation. Ici cette autre courbe est visible en jaune.
J'avais fait seulon ton premier dessin, dans le second ce qui tu veux me semble plus clair.
Il faut que tu envoies le point (ξ,η) sur le point (ξ,f(ξ)) + η N(ξ) où N(ξ) est le vecteur unitaire normal à la courbe (dans l'orientation habituelle du plan) N(ξ) = (-f'(ξ),1)/SQRT(1 + f´(ξ)²).
Je disais que les points du bas du résultat, ici vers la courbe jaune, n'ont pas qu'un seul candidat dans l'image source.
C'est pour cela que le plus simple est probablement de déterminer la couleur en faisant une moyenne comme je te le propose dans B' → B !
Dailleurs le developpement de la partie ora10g est en partie base sur ora9i (c'est un fork-cp: cp ora9i ora10g et on repart). Tout comme le so/ora11g est un "fork" de cc021/ora10g. Comment gerer cela correctement ?
Il faut commencer par définir «correctement»!
Du point de vue de ton SCM, ici Subversion, il s'agit essentiellement de se souvenir que ora10g est un fork de ora9i, ce que font (certainement) tous les SCM postérieurs à CVS, notamment SVN. (Avec svn cp …)
Le problème est que le fork est déjà fait, donc la question suivante est «comment importer l'hisotorique dans Subversion?» si cette historique existe! J'ai l'impression que ce n'est pas le cas, la solution suivante serait d'utiliser une sauvegarde antérieure au fork pour créer une historique artificielle qui permettrait de garder trace du fork dans Subversion.
Ceci dit, si deux arbres source sont aussi proches que tu le dis, on peut se poser la question de l'opportunité d'un fork. Il peut il y avoir de meilleurs moyens d'adapter votre logiciel à son environnement, par exemple avec du polymorphisme ou une configuration adaptée: le SCM n'est pas forcément le bon lieu pour régler ce problème.
J'ai vu dans un autre fil que tu répugnais à imposer à tes collaborateurs l'emploi des branches. Je te suis en partie, mais en principe le travail sur les branches n'est pas si difficile que ça — à une exception notable près: les merge, qui sont une opération plus délicate. Tu peux tout de même introduire les branches en désignant un petit nombre de «officiers de merge» qui sont plus à l'aise avec la technique et s'occuperont des merge, au besoin avec l'aide du développeur auteur des modifications.
Ceci dit, même sur un public de gens peu rompus à l'emploi des SCMs, des interfaces graphiques (intégration dans un explorateur de fichier) pour le SCM et un outil pour les merge permet à chacun de se débrouiller de façon honorable — dans cette solution, tu peux garder l'idée des «officiers de merge» qui épauleront leurs collègues en cas de difficultés.
[^] # Re: void et les templates?
Posté par Michaël (site web personnel) . En réponse à la dépêche Le langage D. Évalué à 2.
Tu as raison, c'est facile pour le premier, mais impossible à faire en C++ car il n'existe pas de valeur de type void. La question qui m'intéresse — par curiosité — est si le langage D répare cette defiscience de C++.
c++
slot<int,int> c1(&f1,0);
slot<void,void> c2(&f2,/* valeur de type void */);
La méthode classique pour s'en tirer consiste à utiliser les spécialisations de templates.
[^] # Re: Irrémédiable
Posté par Michaël (site web personnel) . En réponse au journal Gnome3 et systemd, c'est la fin des haricots!. Évalué à 4.
Non, la plupart des gens préfèrent quand même avoir la même timezone dans une session donnée mais des timezone éventuellement différentes pour chaque session. En gros le schéma que fournit l'héritage de TZ par l'environnement
[^] # Re: void et les templates?
Posté par Michaël (site web personnel) . En réponse à la dépêche Le langage D. Évalué à 4.
La variable n'a aucun sens dans le cas de void, mais dans les autres cas si, donc justement cela induit une exception dans le système des types qui est tout à fait nuisible à la programmation générique.
Par exemple, essayons de définir un slot qui contient une fonction et une valeur sur laquelle appeler la fonction.
La première utilisation
slot<int,int>
fonctionne tandis queslot<void,void>
explose!L'exemple de la définition de
slot
est très instructif parceque si on essaie d'en faire une solution robuste et générale, il faut:— utiliser des types proxies (des templates dont le seul rôle est de définir des types) parcequ'on passe les
int
, les pointeurs et les références par valeur mais les valeurs de la plupart des autres types par référence;— utiliser des call proxies pour encapsuler les appels à
f(x)
(à cause duvoid
);— utiliser des constructeurs divers et variés parcequ'on a bien envie de pouvoir passer des pointeurs vers membres dans nos
slots
.Au final on arrive à un code
très
long et pas très lisible, pour faire correctement ce qui dans le cas général prend 6 lignes.# void et les templates?
Posté par Michaël (site web personnel) . En réponse à la dépêche Le langage D. Évalué à 3.
Parmi les 1001 aspects du C++ qui sont très pénibles quand on programme avec, il y a notamment le fait que:
void x
pour déclarer un argument de type void à une fonction;Ces points sont incroyablement agaçants lorsqu'on fait de la programmation générique. Qu'en est-il en D?
Je pense que tu t'es mal exprimé, surcharge (polysémie) et redéfinition, ce n'est pas du tout la même chose!
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par Michaël (site web personnel) . En réponse à la dépêche Le langage D. Évalué à 2. Dernière modification le 12 juin 2012 à 07:39.
Il me semble que les compilateurs C++ utilisent ces infos pour optimiser, pas pour faire de la vérification — il y a d'ailleurs une exception bad_exception qui signale les exceptions non prévues!
Théoriquement rien n'empêche le compilateur de le savoir, mais il faudrait avoir une notion de fichier objet pour les headers — pour retenir l'information calculée — qui devraient être distribués avec les bibliothèques. (Il faut connaître le header et le code pour faire la déduction correcte.)
# Le point important
Posté par Michaël (site web personnel) . En réponse au journal 0,76% de moyenne nationale pour le parti pirate, déception . Évalué à 10.
En gros, entre la nouveauté du parti et l'absence de programme, vous n'avez laissé aucune chance aux élécteurs d'être convaincus par vos candidatures.
[^] # Re: Moins bien que l'ancienne carte
Posté par Michaël (site web personnel) . En réponse au journal Le nouveau programme de fidélité de la SNCF : Le programme Voyageur. Évalué à 4.
Effectivement, cela fait beaucoup de problèmes! :)
[^] # Re: C'est dommage… pour l'effet de serre !
Posté par Michaël (site web personnel) . En réponse au journal Le nouveau programme de fidélité de la SNCF : Le programme Voyageur. Évalué à 2. Dernière modification le 08 juin 2012 à 22:39.
Ce que je voulais souligner en parlant des trains de marchandises, c'est que dans les faits l'ouverture à la concurrence concerne essentiellement le frêt. On peut en retirer que des opérateurs de trains autres que la SNCF s'intéressent au réseau français en général mais pas au transport de personnes en particulier. Donc oui la concurrence est là, mais pour le transport de passagers, ne semble rien avoir à proposer de mieux que la SNCF.
[^] # Re: un truc de super avec konqueror
Posté par Michaël (site web personnel) . En réponse au journal avenir de konqueror et khtml dans KDE ?. Évalué à 3.
Dans Unix il n'y a pas d'extension juste des suffixes (comme dans tous les mots). Le mot extension s'utilsie en principe uniquement pour les systèmes de fichiers FAT où les noms de fichiers faisaient 8.3 lettres — le `.' séparant la partie principale de son extension n'est pas stockée par le système, d'où le besoin n'un nom spécial pour indiquer cette séquence.
[^] # Re: Pourquoi Linux ne décolle pas
Posté par Michaël (site web personnel) . En réponse au sondage Qu'utilisez vous pour l'installation de vos logiciels tiers ?. Évalué à 7.
Il faudrait une sondage supplémentaire pour demander aux gens comment ils font désinstaller un logiciel, avec une réponse spéciale «je formate mon HD et réinstalle Windows» — parceque parfois il n'y a pas d'autre choix!
[^] # Re: C'est dommage… pour l'effet de serre !
Posté par Michaël (site web personnel) . En réponse au journal Le nouveau programme de fidélité de la SNCF : Le programme Voyageur. Évalué à 2.
C'est sûrement là que ça cloche de mon côté! :)
[^] # Re: Évaluation partielle
Posté par Michaël (site web personnel) . En réponse au message Argument de fonction récurrent. Évalué à 2.
Il ne dit pas qu'il n'aime pas trop que le nom des variables apparaissent dans les applications partielles, ici?
[^] # Re: C'est dommage… pour l'effet de serre !
Posté par Michaël (site web personnel) . En réponse au journal Le nouveau programme de fidélité de la SNCF : Le programme Voyageur. Évalué à -1. Dernière modification le 03 juin 2012 à 13:07.
Quel est le problème avec la SNCF au juste? Qu'est-ce qu'elle fait moins bien que ses homologues en Allemagne, en Angleterre (ah, ah, ah) ou aux USA (ah, ah, ah, ah, ah!)
C'est parceque tu n'as pas bien regardé et que tu n'intéresses pas aux trains de marchandises.
Tu parles des prix des trajets locaux subventionnés par les régions, ou bien des prix des trajets nationaux qui sont moins chers que l'avion ou la voiture (pour une personne qui prend l'autoroute)?
(Ça me rappelle que quand il y a la queue à la pharmacie, personne ne râle, mais à la Poste, là c'est intolérable!)
# Évaluation partielle
Posté par Michaël (site web personnel) . En réponse au message Argument de fonction récurrent. Évalué à 3. Dernière modification le 02 juin 2012 à 18:48.
Je rejoins les commentaires qui t'incitent plutôt à créer un objet encapsulant tes algorithmes, ce qui te permet d'obtenir le résultat attendu. Si tu tiens à l'évaluation partielle, voici une solution un peu moins compliquée que celle de Matthieu.
Elle fait 6 lignes:
Ce qui s'utilise commee ça:
Tu peux itérer le processus comme dans
Tu peux varier la préparation de
argv_x
pour lier le dernier argument, le second etc. Voilà une variante qui lie des arguments de type dictionnaire.Pour troller un peu, je précise que je n'aime pas du tout programmer en Python. :)
[^] # Re: scientificité et scientisme....
Posté par Michaël (site web personnel) . En réponse au journal En Inde, un calvaire oppose catholiques et scientistes. Évalué à 3.
Dans ma phrase, le tout porte sur les axiomes, cela n'a rien à voir avec le théorème de Gödel!
[^] # Re: imagemagick
Posté par Michaël (site web personnel) . En réponse au message erreur sed. Évalué à 2. Dernière modification le 29 mai 2012 à 22:20.
Cela vient probablement de la `-density' du canvas sur lequel convert fait le dessin. Prendre une -density de 300, 600 ou 1200 pour avoir un meilleur résultat.
Chez moi j'utilise
[^] # Re: dump
Posté par Michaël (site web personnel) . En réponse au sondage Quel logiciel libre pour vos sauvegardes ?. Évalué à 4.
Aux gens qui utilisent un OS qui n'est pas livré avec un outil de sauvegarde raisonnable.
[^] # Re: imagemagick
Posté par Michaël (site web personnel) . En réponse au message erreur sed. Évalué à 1.
Je suis François sur ces critiques, mais au lieu d'une image JPEG on peut opter pour un fichier DJVU.
[^] # Re: Miracle ?
Posté par Michaël (site web personnel) . En réponse au journal En Inde, un calvaire oppose catholiques et scientistes. Évalué à 3. Dernière modification le 29 mai 2012 à 07:27.
Je pense notamment aux évêques qui ont spontanément critiqué ce prêtre qui, il y a 2–3 ans, affirmait que le préservatif ne protégeait pas du SIDA car le virus était assez petit pour passer à travers la matière. L'affaire avait eu un petit retentissement national, et je ne me rappelle malheureusement pas qu'elle se soit conclue par un désavœu officiel de la position dudit prêtre par sa hiérarchie.
[^] # Re: scientificité et scientisme....
Posté par Michaël (site web personnel) . En réponse au journal En Inde, un calvaire oppose catholiques et scientistes. Évalué à 5.
Pas du tout. La raison a essentiellement une fonction d'organisation des connaissances, mais pour commencer à organiser quoique ce soit, il faut bien des connaissances avec lesquelles commencer. Ces dernières sont invariablement fournies par l'intuition.
C'est le cas en mathématiques, où on choisit des axiomes et des modes de raisonnement qui nous paraissent en adéquation avec les inuitions qui nous viennent du monde. C'est aussi le cas en philosophie, par exemple lorsqu'on reconnaît que la raison seule est incapable de fonder la morale: dans un système de valeurs morales, la raison permet d'organiser les jugemements ou de dériver de nouveaux jugemements (tuer plusieurs personnes est probablement plus grave que tuer une seule personne qui à son tour est probablement moins grave que de voler une pomme ou pisser dans la piscine de son voisin) de façon cohérente avec avec les premiers jugements.
En revanche, s'il est exclu de tout démontrer — car cela ne semble pas possible — il n'est pas interdit d'argumenter sur le choix de ces axiomes, sans toutefois fournir de démonstration au sens technique du terme. Par exemple, remarquer que tel choix d'axiomes mathématiques aboutit à une teorie contradictoire ou que tels choix de valeurs morales ne permet pas de condamner le nazisme¹ peut mener vers une critique de ces choix.
La différence de taille entre science et religion est que dans un cas la critique des axiomes ou vérités premières est vivement encouragée (à condition d'avoir des arguments, tout de même!) dans l'autre absolument interdite, en tout cas en ce qui concerne le quidam.
¹ Ce n'est pas un point Godwin mais le sujet du livre «Droit naturel et Histoire» de Léo Strauss.
# dump
Posté par Michaël (site web personnel) . En réponse au sondage Quel logiciel libre pour vos sauvegardes ?. Évalué à 9.
Comme j'utilise un vrai système d'exploitation (FreeBSD) il y a déjà un outil de sauvegarde simpliste mais robuste installé dessus. Mon schéma de sauvegarde consiste à faire une sauvegarde de niveau 0 quand ça me pète, une sauvegarde de niveau 1 tous les mois, et des sauvegardes de niveau 2-9 le reste du temps.
[^] # Re: git push
Posté par Michaël (site web personnel) . En réponse au sondage Quel logiciel libre pour vos sauvegardes ?. Évalué à 2.
Il me semble qu'il ne sauvegarde pas les dates, si?
De plus, pour sauvegarder des données utilisateur pourquoi pas, mais s'il s'agit de sauver un système, il vaut mieux penser à autre chose/.
[^] # Re: Algo
Posté par Michaël (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 2. Dernière modification le 22 mai 2012 à 22:41.
J'avais fait seulon ton premier dessin, dans le second ce qui tu veux me semble plus clair.
Il faut que tu envoies le point (ξ,η) sur le point (ξ,f(ξ)) + η N(ξ) où N(ξ) est le vecteur unitaire normal à la courbe (dans l'orientation habituelle du plan) N(ξ) = (-f'(ξ),1)/SQRT(1 + f´(ξ)²).
C'est pour cela que le plus simple est probablement de déterminer la couleur en faisant une moyenne comme je te le propose dans B' → B !
[^] # Re: Un dossier par module
Posté par Michaël (site web personnel) . En réponse au message Du bon usage de svn. Évalué à 3.
Il faut commencer par définir «correctement»!
Du point de vue de ton SCM, ici Subversion, il s'agit essentiellement de se souvenir que ora10g est un fork de ora9i, ce que font (certainement) tous les SCM postérieurs à CVS, notamment SVN. (Avec svn cp …)
Le problème est que le fork est déjà fait, donc la question suivante est «comment importer l'hisotorique dans Subversion?» si cette historique existe! J'ai l'impression que ce n'est pas le cas, la solution suivante serait d'utiliser une sauvegarde antérieure au fork pour créer une historique artificielle qui permettrait de garder trace du fork dans Subversion.
Ceci dit, si deux arbres source sont aussi proches que tu le dis, on peut se poser la question de l'opportunité d'un fork. Il peut il y avoir de meilleurs moyens d'adapter votre logiciel à son environnement, par exemple avec du polymorphisme ou une configuration adaptée: le SCM n'est pas forcément le bon lieu pour régler ce problème.
J'ai vu dans un autre fil que tu répugnais à imposer à tes collaborateurs l'emploi des branches. Je te suis en partie, mais en principe le travail sur les branches n'est pas si difficile que ça — à une exception notable près: les merge, qui sont une opération plus délicate. Tu peux tout de même introduire les branches en désignant un petit nombre de «officiers de merge» qui sont plus à l'aise avec la technique et s'occuperont des merge, au besoin avec l'aide du développeur auteur des modifications.
Ceci dit, même sur un public de gens peu rompus à l'emploi des SCMs, des interfaces graphiques (intégration dans un explorateur de fichier) pour le SCM et un outil pour les merge permet à chacun de se débrouiller de façon honorable — dans cette solution, tu peux garder l'idée des «officiers de merge» qui épauleront leurs collègues en cas de difficultés.
# Un dossier par module
Posté par Michaël (site web personnel) . En réponse au message Du bon usage de svn. Évalué à 3.
dba_w9n/{mysql_tb,oracle_rac,…}/{branches,tags,trunk}
SVN ne garde que HEAD dans le checkout, donc tu ne vas jamais sortir 10 ans de dév.
Tu checkoutes seulement le module que tu veux.
Entre cette organisation, et l'organisation «un repository par module» la différence est mince — est concerne essentiellement l'admin des dépôts.
Tu peux avoir plusieurs dossiers de branches, par exemple pour trier les topic branches et les maintenance branches.