肚子有腹水是什么症状| 好饭不怕晚什么意思| 天蝎座与什么星座最配| 什么蔬菜是温性的| 扁桃体炎吃什么药最好效果好| 脱落细胞学检查是什么| 眼镜轴位是什么意思| 什么的角| 命根子是什么生肖| 摄影三要素是什么| 农历七月是什么星座| 痘痘反复长是什么原因| 表白送什么花| 什么叫混合斑块| 男人秒射是什么原因| wm是什么牌子| 人生赢家什么意思| hbaic是什么意思| 啤酒是什么味道| 5.19是什么星座| 乳腺检查挂什么科| 梁五行属什么| 斑鸠吃什么| 补办医保卡需要什么资料| 双鱼座是什么性格| 什么是鸡皮肤图片| 霉菌性阴炎用什么药好得快| 土字生肖有钱收是什么生肖| 龟头炎用什么| 善存什么时间吃比较好| 宝宝反复发烧是什么原因| hvi是什么病| 皮肤溃烂化脓用什么药| 什么是良心| 中耳炎吃什么药效果比较好| 油菜是什么菜| 狗狗咳嗽吃什么药| 怀孕一个月有什么症状| 中国的四大发明是什么| 眼皮发黑是什么原因| 喝大麦茶有什么好处| 合肥有什么特产| 鲮鱼是什么鱼| 大便有粘液是什么原因| g50是什么高速| nd是什么意思| 一什么石子| 下面老是痒是什么原因| 端午节都吃什么菜好| 伏天是什么意思| 什么狗不如| epl是什么意思| 桦树茸有什么作用| 过敏性紫癜有什么危害| 经常手麻是什么原因| 乙肝病毒携带者有什么症状| 吃什么补津液| 腰部疼痛挂什么科| 什么相争| 骶管小囊肿是什么意思| 假释是什么意思| 什么时候上环是最佳时期| 派大星是什么动物| 尿素高吃什么药| 番薯是什么| 小柴胡颗粒治什么病| 一个虫一个夫念什么| tax是什么意思| ev71是什么疫苗| 灌肠是什么| 二十七岁属什么生肖| 什么是调和油| rush什么意思| 笔触是什么意思| 迂回战术什么意思| 虾片是什么做的| classic是什么牌子| 牵牛花什么时候开| 怀孕初期吃什么水果好| 肠胃湿热吃什么药| 刺史相当于现在什么官| 神经性梅毒有什么症状| 心阴不足吃什么中成药| 炒房是什么意思| 胃病吃什么药| 办独生子女证需要什么材料| 鹅拉绿色粪便是什么病| 抑郁症什么症状表现| 搞基是什么意思| josiny是什么牌子| 少量盆腔积液是什么意思| 什么食物含蛋白高| 尾牙是什么意思| 颈椎轻度退行性变是什么意思| 农历今天属什么生肖| 硫黄是什么| 九层塔是什么菜| 为什么故宫龙椅坐不得| 消化不好吃什么药| 尿道口有烧灼感为什么| 毕业答辩是什么| 家慈是什么意思| 猫不喜欢什么味道| camel是什么颜色| 喜筵和喜宴是什么意思| 九月3日是什么日子| 大专跟本科有什么区别| 菊花配枸杞什么功效| 眼睛发涩是什么原因导致的| 炖鸡肉放什么调料| 麦冬长什么样子图片| 鸡蛋和什么炒好吃| absolutvodka什么酒| 化疗中的病人应该吃什么| 鲨鱼是什么动物| 咖啡豆是什么动物粪便| 66年属马的是什么命| 特仑苏是什么意思| 肾精亏虚吃什么药| 银屑病用什么药膏| 来例假吃什么水果好| reading是什么意思| 子卯相刑有什么危害| 牙疼脸肿了吃什么药| 青鱼吃什么| 上不来气吃什么药| 足字旁的字有什么| 彗星是什么| 有潜力是什么意思| 散光跟近视有什么区别| 血热吃什么药可以凉血| 肝炎吃什么药| 下巴下面长痣代表什么| 孙尚香字什么| 什么是熊猫血型| 感染梅毒有什么症状| 副营长是什么军衔| 过敏有什么症状| 面瘫什么意思| 声东击西什么意思| 幽门螺杆菌阳性吃什么药| fl表示什么意思| 下眼睑肿胀是什么原因| 12月3号是什么星座| 馕是什么意思| 后背发痒是什么原因| 蔡徐坤粉丝名叫什么| 淋巴细胞比率偏高是什么原因| 男人有腰窝意味着什么| 怕热不怕冷是什么体质| rads是什么意思| 精修是什么意思| 什么水果清热去火| 女性小腹疼痛是什么原因| 什么的月季| 双子女喜欢什么样的男生| 牙痛吃什么好| 元五行属性是什么| 蚊子最怕什么东西| 黄体不足吃什么| 1992年属什么生肖| 胆囊壁增厚是什么意思| 阴道有味道是什么原因| 定夺是什么意思| 星期天为什么不叫星期七| 梦见老公出轨预示什么| 什么东西能缓解孕吐| 巫师是什么意思| 美的本质是什么| 湿气重有什么症状| 藏红花和什么一起泡水喝效果好| vk是什么意思| 汝等是什么意思| 钱癣用什么药膏最好| 酸菜鱼是什么地方的菜| h代表什么单位| 女性尿里带血是什么原因| 痱子是什么样的| 爷爷的爸爸叫什么| 众生是什么意思| 壁虎进家里预示什么| 为什么会晕血| 什么东西最伤肾| 黑枸杞有什么功效| 参天大树什么意思| 市辖区什么意思| 黄历中的入宅是什么意思| 什么样的树| 罗汉局是什么意思| 办身份证需要准备什么| 炎细胞浸润是什么意思| 总掉头发是什么原因| hpv病毒通过什么途径传播| 阳历7月份是什么星座| 什么叫变态| 痛风性关节炎吃什么药| 包饺子剩下的面团能做什么| 一个月一个亏念什么| 男人长阴虱是什么原因| 老人大小便失禁是什么原因造成的| 身上很痒是什么原因| 自律是什么意思| 石斛有什么作用和功效| 吹弹可破的意思是什么| 乙肝两对半和乙肝五项有什么区别| 螃蟹的什么部位不能吃| 春节吃什么| 梦见丢了一只鞋是什么意思| 高血压什么症状表现| 九月八号是什么星座| 地盆是一种什么病| 睾丸疼什么原因| 柚子是什么季节的水果| 蚝油可以用什么代替| 左金丸治什么病最好| 摔跤擦伤破皮擦什么药| 扫地僧是什么意思| 石斛不能和什么一起吃| 愈合是什么意思| 什么食粮| 星期六打喷嚏代表什么| neg是什么意思| 子宫瘢痕憩室是什么病| 是什么结构| 侵犯什么意思| o什么意思| ih医学上是什么意思| 重症医学科是干什么的| 五月三十一号是什么星座| 火龙果是什么颜色| 结核病是什么| 康庄大道什么意思| 敕令是什么意思| 打闭经针有什么副作用| 打嗝用什么药| f代表什么| 口炎读什么| 胆固醇为什么会高| 血糖低吃什么补得最快| 红色裤子配什么上衣好看| 升白细胞的针剂叫什么| b类火灾是指什么| 表白送什么花| la帽子是什么牌子| audrey是什么意思| 梦见抢银行是什么意思| 古丽是什么意思| 梦是什么| 三高人群适合吃什么水果| 什么药溶血栓最好| 腋下有异味是什么原因| 6月26日是什么星座| 缺铁性贫血吃什么食物| 大腿后侧疼痛什么原因| 绯色是什么意思| 保姆代表什么生肖| 三言两语是什么生肖| 向左向右向前看是什么歌| 粥样动脉硬化吃什么药| 什么方法可以快速排便| 二龙戏珠是什么意思| 男人吃什么壮阳最快| 早上嘴苦是什么原因| 梦见骆驼是什么意思| 百度Aller au contenu

国家圆梦女孩志愿行动儿童剧《雏菊花》创作...

Un article de Wikipédia, l'encyclopédie libre.
Exemple d'arbre de gestion de versions
百度 会议首先通报和宣读了2017年度市社科联系统先进集体和先进工作者、市社科普及活动优秀组织和先进个人名单,2017年度市社科联星级社团评定结果和市社科联第十二届社科优秀成果获奖名单,并对获奖代表进行颁奖。

La gestion de versions (en anglais : version control ou revision control) consiste à gérer l'ensemble des versions d'un ou plusieurs fichiers (généralement en texte). Essentiellement utilisée dans le domaine de la création de logiciels, elle concerne surtout la gestion des codes source.

Cette activité étant fastidieuse et relativement complexe, un appui logiciel est presque indispensable. à cet effet, il existe différents logiciels de gestion de versions qui, bien qu'ayant des concepts communs, apportent chacun leur propre vocabulaire et leurs propres usages. à titre d'exemple, on trouve un mécanisme rudimentaire de gestion de versions dans Wikipédia : pour chaque article, l'historique est disponible en cliquant sur le lien Afficher l'historique ; chaque ligne est une version de l'article. Ce système a plusieurs caractéristiques: il est linéaire et chronologique, par opposition à une gestion de contenu élaborée selon une structure arborescente; une version d'une page est indépendante des versions des autres pages, par opposition à une étiquette qui permette de désigne une version d'un ensemble de pages.

Historique des systèmes de version centralisés

[modifier | modifier le code]

L' outil de mise à jour logiciel IEBUPDTE pour OS/360 d'IBM remonte à 1962, un précurseur des outils systèmes de contr?le de version. Deux gestionnaires de source et papquets de contr?le de version qui sont lourdement utilisés par des installations IBM 360/370 sont The Librarian et Panvalet[1],[2].

Un système complètement con?u pour le contr?le de code source commence en 1972: le Source Code Control System (SCCS), aussi pour l'OS/360. Le manuel utilisateur de SCCS, et en particulier son introduction, sont publiés le décembre 1975, suggère qu'il est le premier système de contr?le de révision délibéré[3]. Le Revision Control System (RCS) suit en 1982[4] et, plus tard, le logiciel Concurrent Versions System (CVS) ajoute le réseau et le développement de fonctionnalités concurrentes sur RCS. Après CVS, un successeur dominant est Subversion[5]. Par la suite, sont arrivés des distributed version control tels que Git[6].

Historique des systèmes de version distribués

[modifier | modifier le code]

Les premiers systèmes de version distribués (DVCS) incluent Arch, Monotone, et Darcs. Les DVCS open source n'ont jamais été très utilisés jusqu'à la publication de Git et Mercurial.

BitKeeper est utilisé dans le développement du noyau Linux de 2002 à 2005[7]. Le développement de Git, le système open source de contr?le de version le plus utilisé [8], est accéléré par la décision de la société autrice de BitKeeper de reconsidérer la licence libre que Linus Torvalds et d'autres développeurs du noyau Linux ont initialiement profité[7].

Les logiciels évoluant, chaque étape d'avancement est appelée version (ou revision). Les différentes versions sont nécessairement liées à travers des modifications (diff ou patch) : une modification est un ensemble d'ajouts, de modifications, et de suppressions de données.

Schématiquement, on passera de la version N à la version N + 1 en appliquant une modification M. Un logiciel de gestion de versions applique ou retire ces modifications une par une pour fournir la version du fichier voulue.

On préfère parfois le terme ? révision ? afin de ne pas confondre la version d'un fichier et la version d'un logiciel, qui est une étape de distribution sous forme ?finie?, c'est-à-dire principalement binaire.

Modifications et ensemble de modifications

[modifier | modifier le code]

Une modification constitue donc l'évolution entre deux versions. On peut donc aussi bien parler de la différence entre deux versions que de modifications ayant amené à une nouvelle version.

On utilise généralement la gestion de versions à un ensemble de fichiers qui constitue un projet. De ce fait, il est courant de parler de modifications pour un seul fichier et d'ensemble de modifications (change set) lorsqu'il s'agit du projet (et donc de plusieurs fichiers). En effet, les deux n'évoluent pas au même rythme.

Pour illustrer, prenons l'exemple d'un logiciel nommé ? Toto ?. Il est constitué des fichiers A, B et C. à la version 1.0 de ? Toto ? correspondent les versions 1.0 de chacun des fichiers. Admettons que l'ajout d'une fonctionnalité à ? Toto ? impose la modification de A et de C. Présentons la situation à l'aide d'un tableau

versions de ? Toto ? versions de A versions de B versions de C
1.0 1.0 1.0 1.0
1.1 1.1 1.1

Du point de vue du projet, les modifications apportées à A et à C font partie du même ensemble.

Dép?t et copies locales

[modifier | modifier le code]

Les fichiers ainsi versionnés sont mis à dispositions sur un dép?t, c'est-à-dire un espace de stockage géré par un logiciel de gestion de versions.

Pour pouvoir effectuer des modifications, le développeur doit d'abord faire une copie locale des fichiers qu'il souhaite modifier, ou de tout le dép?t. Selon les systèmes de gestion de version, certains fichiers peuvent être verrouillés ou protégés en écriture pour tout le monde, ou pour certaines personnes.

Le développeur fait ses modifications et effectue ses premiers tests localement, indépendamment des modifications faites sur le dép?t du fait du travail simultané d'autres développeurs. Il doit ensuite faire un commit (une ?soumission?), c'est-à-dire soumettre ses modifications, afin qu'elles soient enregistrées sur le dép?t. C'est là que peuvent appara?tre des conflits entre ce que le développeur souhaite soumettre et les modifications effectuées depuis la dernière copie locale effectuée. Ces conflits doivent être résolus (merge) pour que le patch soit accepté sur le dép?t.

Lorsque des modifications divergentes interviennent hors conflit, il se crée des branches. Le fait de vouloir rassembler deux branches est une fusion de branches.

Les branches sont utilisées pour permettre :

  • la maintenance d'anciennes versions du logiciel (sur les branches) tout en continuant le développement des futures versions (sur le tronc) ;
  • le développement parallèle de plusieurs fonctionnalités volumineuses sans bloquer le travail quotidien sur les autres fonctionnalités.

Les correctifs de la dernière version doivent être faits sur le trunk.

Conflit de modifications

[modifier | modifier le code]

Dans le cas d'un développement en équipe, surtout si elles sont réparties dans le monde entier, il est nécessaire de partager une base commune de travail, et c'est tout l'intérêt des systèmes de gestion de version. Mais, il faut aussi veiller à coordonner les équipes de développement grace à des outils de communication, un logiciel de suivi de problèmes, un générateur de documentation et/ou un logiciel de gestion de projets.

Il n'est pas rare que certaines modifications soient contradictoires (par exemple lorsque deux personnes ont apporté des modifications différentes à la même partie d'un fichier). On parle alors de conflit de modifications car le logiciel de gestion de versions n'est pas en mesure de savoir laquelle des deux modifications il faut appliquer.

Le contr?le de la concurrence (en), pour éviter ces conflits de modifications, est un problème classique en informatique : on le retrouve par exemple dans les systèmes de gestion de base de données ou en programmation système. Il peut être géré de deux manières différentes[9], qui ont toutes deux été appliquées à la gestion de version :

  • Le contr?le de concurrence pessimiste impose à chaque utilisateur de demander un verrou avant de modifier une ressource ; ce verrou lui garantit qu'il sera le seul à modifier la ressource. Ce modèle s'impose quand on considère que le co?t de résolution des conflits de modification (co?t unitaire pondéré par leur probabilité d'occurrence) est plus important que celui de la gestion du verrou. En gestion de version, il correspond au modèle ?verrouiller-modifier-déverrouiller?[10] qui était utilisé par les systèmes les plus anciens. Il s'est avéré que la gestion manuelle des verrous par les utilisateurs n'était pas toujours satisfaisante : les outils de diff/merge s'améliorant, il est progressivement devenu moins pénalisant de corriger les conflits d'éditions simultanées que de traiter les problèmes de fichiers verrouillés en écriture.
  • Le contr?le de concurrence optimiste permet à chaque utilisateur de modifier les données sans contrainte. Au moment d'appliquer ces modifications le système vérifie si un autre utilisateur n'a pas déjà posté des modifications pour ces mêmes données : il demande alors à l'utilisateur de résoudre le conflit avant de re-soumettre ses données. En gestion de configuration, c'est le modèle ?copier-modifier-fusionner? qui a été popularisé par CVS. Il est devenu le paradigme de base des systèmes de gestion décentralisés.

Systèmes centralisés et décentralisés

[modifier | modifier le code]

Gestion de versions centralisée

[modifier | modifier le code]

Avec les logiciels de gestion de versions centralisée, comme CVS et Subversion (SVN), il n'existe qu'un seul dép?t des versions qui fait référence. Historiquement, cela correspond par exemple à un développement dans une équipe organisation simple, par exemple dans un réseau local (université, entreprise, etc.)

L'unicité du dép?t simplifie la gestion des versions mais a des limites. Une contrainte concerne certains usages comme le travail sans connexion au réseau. Une autre contrainte concerne le travail sur des branches expérimentales ou contestées.

Gestion de versions décentralisée

[modifier | modifier le code]

L'outil de gestion de versions décentralisée peut être vu comme permettant à chacun des développeurs ou à chacune des équipes de développeurs de travailler à un rythme indépendant, désynchronisée, puis d'offrir un moyen d'échange des travaux respectifs.

Dans la gestion de versions décentralisée, de fait, et par définition, il existe plusieurs dép?ts pour un même logiciel. Ce système est très utilisé par les logiciels libres qui ne se limitent pas à une organisation ou un organisme centralisé.

Par exemple, GNU Arch, Git et Mercurial sont des logiciels de gestion de versions décentralisée.

Avantages de la gestion décentralisée :

  • permet de ne pas être dépendant d'une seule machine comme point de défaillance ;
  • permet aux contributeurs de travailler sans être connectés au gestionnaire de version ;
  • permet la participation à un projet sans nécessiter les permissions par un responsable du projet (les droits de commit/soumission peuvent donc être donnés après avoir démontré son travail et non pas avant) ;
  • la plupart des opérations sont plus rapides car réalisées en local (sans accès réseau) ;
  • permet le travail privé pour réaliser des brouillons sans devoir publier ses modifications et gêner les autres contributeurs ;
  • permet toutefois de garder un dép?t de référence contenant les versions livrées d'un projet.

Inconvénients :

  • cloner un dép?t est plus long que récupérer une version pour une gestion de version décentralisée car tout l'historique est copié (ce qui est toutefois un avantage par la suite) ;
  • il n'y a pas de système de lock (ce qui peut poser des problèmes pour des données binaires qui ne se fusionnent pas).

En 2010, l'auteur de développement logiciel Joel Spolsky décrit la gestion de version décentralisée comme ? probablement la plus grande avancée dans les technologies de développement logiciel dans les 10 [dernières] années. ?[11], c'est-à-dire entre 2000 et 2010.

Fonctionnalités particulières

[modifier | modifier le code]

étiquetage ou marquage

[modifier | modifier le code]

Cela consiste à associer un nom à une version donnée. Pour certains outils de gestion de versions (comme CVS) qui gèrent les versions à une faible granularité (beaucoup de modifications non significatives), c'est un moyen de retrouver facilement une version significative.

Verrouillage et notifications

[modifier | modifier le code]

Pour le travail en équipe, certains logiciels de gestion de versions apportent des outils pour communiquer.

Par exemple, le verrouillage permet d'interdire la modification d'un fichier, tandis que la notification émet un avertissement à tous les autres membres lorsqu'un fichier est modifié.

Proposition de révision

[modifier | modifier le code]

La proposition de révision (PR) est l'action qui consiste à demander au détenteur du dép?t de référence de prendre en compte les modifications que vous avez apportées sur votre dép?t de fork ou votre dép?t local et que vous souhaitez partager au dép?t de référence.

Exemples de logiciels de gestion de versions

[modifier | modifier le code]

Les logiciels de contr?le de versions sont nombreux. Sous UNIX, il y a eu SCCS qui a suscité un autre logiciel libre : GNU RCS devenu un standard de fait. CVS, qui gère mieux les arborescences de fichiers que RCS, est devenu extrêmement répandu dans le monde du logiciel libre et dans les entreprises, de par sa simplicité.

Ils ont été progressivement remplacés par des alternatives plus modernes, comme Subversion puis Git, qui sont désormais plus utilisés que leurs prédécesseurs[12]. D'autres logiciels, comme Bazaar ou Mercurial sont des alternatives à Git qui disposent de bases d'utilisateurs conséquentes.

Dans le monde propriétaire, ClearCase, Synergy (d'IBM) et Dimensions (de Serena Software (en)) sont les plus répandus[réf. nécessaire]. Il y a aussi Visual Source Safe et Team Foundation Server (de Microsoft) qui s'intègrent avec Visual Studio. Il existe également AlienBrain, souvent utilisé dans le monde du jeu vidéo car particulièrement adapté à la gestion de ressources graphiques et sonores. L'AGL WinDev (de PCSoft) utilise sa propre implémentation de gestion de versions.

Articles connexes

[modifier | modifier le code]

Sur les autres projets Wikimedia :

Références

[modifier | modifier le code]
  1. Martin Goetz, interview par Jeffrey R. Yost, An Interview with Martin Goetz,
  2. Joseph Piscipo, interview par Thomas Haigh, An Interview with Joseph Piscopo,
  3. Marc J. Rochkind, ? The Source Code Control System ?, IEEE Transactions on Software Engineering, vol. SE-1, no 4,‎ , p. 364–370 (DOI 10.1109/TSE.1975.6312866, S2CID 10006076, lire en ligne)
  4. Walter F. Tichy, ? Rcs — a system for version control ?, Software: Practice and Experience, vol. 15, no 7,‎ , p. 637–654 (ISSN 0038-0644, DOI 10.1002/spe.4380150703, S2CID 2605086, lire en ligne [archive du ] Accès payant, consulté le )
  5. Ben Collins-Sussman, BW Fitzpatrick et CM Pilato, Version Control with Subversion, O'Reilly, (ISBN 0-596-00448-6, lire en ligne Inscription nécessaire)
  6. Jon Loeliger et Matthew McCullough, Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development, O'Reilly Media, , 2–5 p. (ISBN 978-1-4493-4504-4, lire en ligne [archive du ])
  7. a et b (en) Neil McAllister, ? Linus Torvalds' BitKeeper blunder ?, InfoWorld,‎ (lire en ligne, consulté le )
  8. Version Control Systems Popularity in 2016 ?, sur www.rhodecode.com (consulté le )
  9. Types de contr?les de concurrence ?, sur microsoft.com via Wikiwix (consulté le ).
  10. Modèles de gestion de version ?, sur tortoisesvn.net (consulté le ).
  11. (en) Joel Spolsky, ? Distributed Version Control is here to stay, baby ?, sur Joel on Software, (consulté le )
  12. Eclipse Community Survey 2014 Results ?, sur Ian Skerrett, (consulté le )
血小板低会有什么症状 蓝牙耳机什么牌子好 男女身份证号码有什么区分 梦见发大水是什么预兆 软包是什么意思
晖字五行属什么 浩瀚是什么意思 肾阴虚什么症状 香云纱是什么面料 命门火衰是什么意思
血红蛋白浓度偏高是什么原因 女性分泌物少是什么原因 金骏眉属于什么茶 地贫吃什么补血最快 生冷辛辣指的是什么
4月6日什么星座 卷柏是什么植物 辩证法是什么意思 泌尿外科是看什么的 狂风暴雨是什么意思
咳嗽吃什么hcv7jop5ns6r.cn 殆什么意思hcv9jop4ns1r.cn 频频是什么意思wmyky.com 脾胃气滞吃什么中成药hcv8jop3ns5r.cn 晚上十一点多是什么时辰hcv8jop2ns1r.cn
排骨和什么一起炖好吃hcv9jop7ns2r.cn 手抖是什么原因引起的hcv8jop9ns7r.cn 什么叫养生hcv9jop4ns7r.cn 10个油是什么意思hcv9jop2ns0r.cn 什么叫地包天hcv7jop6ns9r.cn
什么叫服务贸易hcv7jop5ns4r.cn 正常人突然抽搐是什么原因hcv8jop1ns8r.cn 以逸待劳是什么意思hcv8jop6ns0r.cn 为什么突然就得肝炎了hcv8jop6ns2r.cn 胎儿左肾盂分离是什么意思hcv7jop7ns4r.cn
装腔作势是什么意思hcv9jop4ns0r.cn 梦到自己孩子死了是什么征兆hcv8jop7ns4r.cn 女中指戴戒指什么意思hcv8jop0ns8r.cn 为什么小鸟站在电线上不会触电hcv7jop7ns4r.cn 燕麦片热量高为什么还能减肥hcv9jop3ns7r.cn
百度