merge main

This commit is contained in:
Peter Cottle 2025-06-27 19:38:49 -04:00
commit ffb51ef1da
38 changed files with 3586 additions and 3284 deletions

View file

@ -36,7 +36,7 @@
"prompt": "^1.2.2",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0",
"vite": "^4.5.6"
"vite": "^4.5.14"
},
"dependencies": {
"backbone": "^1.4.0",

322
scripts/translate.js Normal file
View file

@ -0,0 +1,322 @@
const fs = require('fs');
const path = require('path');
// This is a placeholder for a real translation API call
async function translate(text, locale) {
console.log(`Translating "${text}" to ${locale}`);
// In a real implementation, you would call an API like OpenAI, Google Translate, etc.
// For now, we'll just return a placeholder.
return new Promise(resolve => setTimeout(() => resolve(`[AI translated for ${locale}] ${text}`), 200));
}
async function translateLevels(locale) {
const levelsDir = path.join(__dirname, '../src/levels');
const levelFiles = getAllLevelFiles(levelsDir);
for (const file of levelFiles) {
const levelPath = file;
const levelData = require(levelPath);
if (levelData && levelData.level) {
const level = levelData.level;
let updated = false;
// Translate name
if (level.name && level.name.en_US && !level.name[locale]) {
level.name[locale] = await translate(level.name.en_US, locale);
updated = true;
}
// Translate hint
if (level.hint && level.hint.en_US && !level.hint[locale]) {
level.hint[locale] = await translate(level.hint.en_US, locale);
updated = true;
}
// Translate startDialog
if (level.startDialog && level.startDialog.en_US && !level.startDialog[locale]) {
const translatedDialog = await translateDialog(level.startDialog.en_US, locale);
level.startDialog[locale] = translatedDialog;
updated = true;
}
if (updated) {
const newContent = `exports.level = ${JSON.stringify(level, null, 2)};`;
fs.writeFileSync(levelPath, newContent, 'utf8');
console.log(`Updated ${file} with ${locale} translations.`);
}
}
}
}
async function translateStrings(locale) {
const stringsPath = path.join(__dirname, '../src/js/intl/strings.js');
const stringsData = require(stringsPath);
const allStrings = stringsData.strings;
let updated = false;
for (const key in allStrings) {
if (allStrings[key].en_US && !allStrings[key][locale]) {
console.log(`Translating string for key '${key}'`);
const translatedText = await translate(allStrings[key].en_US, locale);
allStrings[key][locale] = translatedText;
updated = true;
}
}
if (updated) {
const newContent = `exports.strings = ${JSON.stringify(allStrings, null, 2)};`;
fs.writeFileSync(stringsPath, newContent, 'utf8');
console.log(`Updated ${stringsPath} with ${locale} translations.`);
console.log('NOTE: Comments and original formatting in strings.js have been removed by this process.');
} else {
console.log('All strings for locale ' + locale + ' are already translated.');
}
}
function getAllLevelFiles(dir) {
let files = [];
const items = fs.readdirSync(dir);
items.forEach(item => {
const fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
files = files.concat(getAllLevelFiles(fullPath));
} else if (item.endsWith('.js')) {
files.push(fullPath);
}
});
return files;
}
async function translateDialog(dialog, locale) {
const newDialog = JSON.parse(JSON.stringify(dialog)); // Deep copy
for (const view of newDialog.childViews) {
if (view.options && view.options.markdowns) {
const translatedMarkdowns = [];
for (const markdown of view.options.markdowns) {
translatedMarkdowns.push(await translate(markdown, locale));
}
view.options.markdowns = translatedMarkdowns;
}
}
return newDialog;
}
function getLevelTranslationStatus(locale, levelFiles) {
let present = 0;
let missing = 0;
let total = 0;
const missingDetails = [];
for (const file of levelFiles) {
const levelPath = file;
delete require.cache[require.resolve(levelPath)];
const levelData = require(levelPath);
if (levelData && levelData.level) {
const level = levelData.level;
const fields = ['name', 'hint', 'startDialog'];
fields.forEach(field => {
if (level[field] && level[field].en_US) {
total++;
if (level[field][locale]) {
present++;
} else {
missing++;
missingDetails.push(` - Missing '${field}' in ${path.basename(file)}`);
}
}
});
}
}
return { present, missing, total, missingDetails };
}
function getStringsTranslationStatus(locale) {
const stringsPath = path.join(__dirname, '../src/js/intl/strings.js');
delete require.cache[require.resolve(stringsPath)];
const allStrings = require(stringsPath).strings;
let present = 0;
let missing = 0;
let total = 0;
const missingDetails = [];
for (const key in allStrings) {
if (allStrings[key].en_US) {
total++;
if (allStrings[key][locale]) {
present++;
} else {
missing++;
missingDetails.push(` - Missing string for key '${key}'`);
}
}
}
return { present, missing, total, missingDetails };
}
function listLocales() {
const levelsDir = path.join(__dirname, '../src/levels');
const levelFiles = getAllLevelFiles(levelsDir);
const allLocales = new Set();
// From levels
for (const file of levelFiles) {
const levelPath = file;
delete require.cache[require.resolve(levelPath)];
const levelData = require(levelPath);
if (levelData && levelData.level) {
const level = levelData.level;
if (level.name) Object.keys(level.name).forEach(locale => allLocales.add(locale));
if (level.hint) Object.keys(level.hint).forEach(locale => allLocales.add(locale));
if (level.startDialog) Object.keys(level.startDialog).forEach(locale => allLocales.add(locale));
}
}
// From strings
const stringsPath = path.join(__dirname, '../src/js/intl/strings.js');
delete require.cache[require.resolve(stringsPath)];
const allStrings = require(stringsPath).strings;
for (const key in allStrings) {
Object.keys(allStrings[key]).forEach(locale => allLocales.add(locale));
}
allLocales.delete('__desc__');
console.log('Known locales and their translation status:');
allLocales.forEach(locale => {
const levelStatus = getLevelTranslationStatus(locale, levelFiles);
const stringsStatus = getStringsTranslationStatus(locale);
const totalPresent = levelStatus.present + stringsStatus.present;
const totalTotal = levelStatus.total + stringsStatus.total;
const percentage = totalTotal > 0 ? ((totalPresent / totalTotal) * 100).toFixed(2) : "0.00";
console.log(`- ${locale}: ${totalPresent}/${totalTotal} (${percentage}%)`);
console.log(` - Levels: ${levelStatus.present}/${levelStatus.total}`);
console.log(` - Strings: ${stringsStatus.present}/${stringsStatus.total}`);
});
}
function checkStatus(locale) {
const levelsDir = path.join(__dirname, '../src/levels');
const levelFiles = getAllLevelFiles(levelsDir);
console.log(`Checking translation status for locale: ${locale}`);
const levelStatus = getLevelTranslationStatus(locale, levelFiles);
const stringsStatus = getStringsTranslationStatus(locale);
const totalPresent = levelStatus.present + stringsStatus.present;
const totalMissing = levelStatus.missing + stringsStatus.missing;
const totalTotal = levelStatus.total + stringsStatus.total;
const overallPercentage = totalTotal > 0 ? ((totalPresent / totalTotal) * 100).toFixed(2) : "0.00";
console.log(`\n--- Status for ${locale} ---\n`);
console.log(`Overall Completion: ${overallPercentage}% (${totalPresent}/${totalTotal})`);
const levelPercentage = levelStatus.total > 0 ? ((levelStatus.present / levelStatus.total) * 100).toFixed(2) : "0.00";
console.log(`- Levels: ${levelPercentage}% (${levelStatus.present}/${levelStatus.total})`);
const stringsPercentage = stringsStatus.total > 0 ? ((stringsStatus.present / stringsStatus.total) * 100).toFixed(2) : "0.00";
console.log(`- Strings: ${stringsPercentage}% (${stringsStatus.present}/${stringsStatus.total})`);
console.log('--------------------');
if (levelStatus.missing > 0) {
console.log('\nMissing Level Translations:');
levelStatus.missingDetails.forEach(line => console.log(line));
}
if (stringsStatus.missing > 0) {
console.log('\nMissing String Translations:');
stringsStatus.missingDetails.forEach(line => console.log(line));
}
}
function normalize() {
console.log('Normalizing all level and string files...');
// Normalize levels
const levelsDir = path.join(__dirname, '../src/levels');
const levelFiles = getAllLevelFiles(levelsDir);
for (const file of levelFiles) {
const levelPath = file;
delete require.cache[require.resolve(levelPath)];
const levelData = require(levelPath);
if (levelData && levelData.level) {
const newContent = `exports.level = ${JSON.stringify(levelData.level, null, 2)};`;
fs.writeFileSync(levelPath, newContent, 'utf8');
console.log(`Normalized ${file}`);
}
}
// Normalize strings
const stringsPath = path.join(__dirname, '../src/js/intl/strings.js');
delete require.cache[require.resolve(stringsPath)];
const stringsData = require(stringsPath);
if (stringsData && stringsData.strings) {
const newContent = `exports.strings = ${JSON.stringify(stringsData.strings, null, 2)};`;
fs.writeFileSync(stringsPath, newContent, 'utf8');
console.log(`Normalized ${stringsPath}`);
console.log('NOTE: Comments and original formatting in strings.js have been removed by this process.');
}
console.log('\nNormalization complete.');
}
const arg = process.argv[2];
const nextArg = process.argv[3];
async function main() {
if (!arg) {
console.error('Please provide a command.');
console.error('Usage:');
console.error(' node scripts/translate.js --list-locales');
console.error(' node scripts/translate.js --status <locale>');
console.error(' node scripts/translate.js --translate-levels <locale>');
console.error(' node scripts/translate.js --translate-strings <locale>');
console.error(' node scripts/translate.js --normalize');
console.error(' node scripts/translate.js <locale> (Translates all missing strings for a locale)');
process.exit(1);
}
if (arg === '--list-locales') {
listLocales();
} else if (arg === '--status') {
if (!nextArg) {
console.error('Please provide a locale for status check. Example: node scripts/translate.js --status fr_FR');
process.exit(1);
}
checkStatus(nextArg);
} else if (arg === '--translate-levels') {
if (!nextArg) {
console.error('Please provide a locale to translate. Example: node scripts/translate.js --translate-levels fr_FR');
process.exit(1);
}
await translateLevels(nextArg);
} else if (arg === '--translate-strings') {
if (!nextArg) {
console.error('Please provide a locale to translate. Example: node scripts/translate.js --translate-strings fr_FR');
process.exit(1);
}
await translateStrings(nextArg);
} else if (arg === '--normalize') {
normalize();
} else {
console.log(`Translating all missing strings for ${arg}...`);
await translateLevels(arg);
await translateStrings(arg);
console.log(`\nFinished translating all missing strings for ${arg}.`);
checkStatus(arg);
}
}
main();

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,7 @@ exports.level = {
"name": {
"en_US": "Multiple parents",
"zh_CN": "两个 parent 节点",
'fr_FR': 'Parents multiples',
"fr_FR": "Parents multiples",
"de_DE": "Mehrere Vorgänger",
"ja": "複数の親",
"es_AR": "Múltiples padres",
@ -17,11 +17,11 @@ exports.level = {
"ro": "Mai mulți părinți",
"ru_RU": "Здоровая семья, или несколько родителей",
"ko": "다수의 부모",
'uk': 'Декілька батьків',
'vi': 'Nhiều cha lắm mẹ',
'sl_SI': 'Več Staršev',
'ta_IN': 'ஒன்றுக்கு மேற்ப்பட்ட துவக்க கிலைகள்',
'it_IT': "Genitori multipli",
"uk": "Декілька батьків",
"vi": "Nhiều cha lắm mẹ",
"sl_SI": "Več Staršev",
"ta_IN": "ஒன்றுக்கு மேற்ப்பட்ட துவக்க கிலைகள்",
"it_IT": "Genitori multipli",
"pl": "Wielu rodziców",
"tr_TR": "Birden fazla ebeveyn"
},
@ -29,7 +29,7 @@ exports.level = {
"en_US": "Use `git branch bugWork` with a target commit to create the missing reference.",
"de_DE": "Nutze `git branch bugWork` mit einem Ziel-Commit um die fehlende Referenz zu erstellen.",
"ja": "`git branch bugWork`を対象のコミットと組み合わせて使い、欠如しているリファレンスを作成しましょう",
'fr_FR': 'Utilisez "git branch bugWork" avec un commit pour créer une référence manquante',
"fr_FR": "Utilisez \"git branch bugWork\" avec un commit pour créer une référence manquante",
"zh_CN": "使用 `git branch bugWork` 加上一个目标提交记录来创建消失的引用。",
"es_AR": "Usá `git branch bugWork` sobre algún commit para crear la referencia faltante",
"es_MX": "Use `git branch bugWork` sobre algún commit para crear la referencia faltante",
@ -40,11 +40,11 @@ exports.level = {
"ro": "Folosește `git branch bugWork` cu un commit țintă pentru a crea referința lipsă.",
"ru_RU": "`git branch bugWork` на нужном коммите поможет создать нужную ссылку.",
"ko": "`git branch bugWork`를 대상 커밋과 함께 사용해서 부족한 참조를 만드세요",
'uk': 'Використай "git branch bugWork" на потрібному коміті щоб створити потрібне посилання',
'vi': 'Dùng lệnh `git branch bugWork` để tạo nhánh tại vị trí chỉ định',
'sl_SI': 'Uporabi `git branch bugWork` s ciljnim commitom za ustvarjanje manjkajoče reference.',
"uk": "Використай \"git branch bugWork\" на потрібному коміті щоб створити потрібне посилання",
"vi": "Dùng lệnh `git branch bugWork` để tạo nhánh tại vị trí chỉ định",
"sl_SI": "Uporabi `git branch bugWork` s ciljnim commitom za ustvarjanje manjkajoče reference.",
"ta_IN": "`git branch bugWork` பயன்படுத்தி தேவைப்படும் கமிட்டுடன் இழந்த இணைப்பை உருவாக்குக.",
'it_IT': "Scrivi `git branch bugWork` con un commit per creare il riferimento mancante.",
"it_IT": "Scrivi `git branch bugWork` con un commit per creare il riferimento mancante.",
"pl": "Użyj `git branch bugWork` na docelowym commicie, aby utworzyć brakującą referencję.",
"tr_TR": "Eksik referansı oluşturmak için hedef commit ile `git branch bugWork` komutunu kullanın."
},
@ -237,7 +237,7 @@ exports.level = {
"",
"Normalement Git suit le \"premier\" parent pour un commit/merge, mais avec un numéro après `^` le comportement par défaut est modifié.",
"",
"Assez de bla bla, passons à l\'action",
"Assez de bla bla, passons à l'action",
""
]
}
@ -251,7 +251,7 @@ exports.level = {
"(*Dans notre vue, le premier parent se situe juste au dessus du merge.*)"
],
"afterMarkdowns": [
"Facile -- c\'est ce que nous faisons tout le temps."
"Facile -- c'est ce que nous faisons tout le temps."
],
"command": "git checkout main^",
"beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2"
@ -1702,91 +1702,92 @@ exports.level = {
}
]
},
'it_IT': {
childViews: [
"it_IT": {
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"### Specificare i genitori",
"",
"Come il modificatore `~` , anche il modificatore `^` accetta un numero (opzionale) dopo di esso.",
"",
"Invece che specificare il numero di generazioni di cui tornare indietro (come accade con `~`), il modificatore `^` specifica quale genitore seguire partendo da un merge commit (di fusione). Ricorda che i merge commit hanno genitori multipli, quindi il percorso da seguire può essere ambiguo.",
"",
'Git normalmente segue il primo genitore partendo da un merge commit, ma specificando un numero con `^` cambia questo comportamento predefinito.',
"Git normalmente segue il primo genitore partendo da un merge commit, ma specificando un numero con `^` cambia questo comportamento predefinito.",
"",
"Basta parlare, vediamolo in azione.",
"",
],
},
""
]
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Qui abbiamo un merge commit. Se facciamo checkout `main^` senza modificatore, seguiremo il primo genitore dopo il merge commit. ",
"",
"(*Nell'immagine, il primo genitore è situato direttamente al di sopra del merge commit.*)",
"(*Nell'immagine, il primo genitore è situato direttamente al di sopra del merge commit.*)"
],
afterMarkdowns: ["Facile -- questo è quello a cui siamo abituati."],
command: "git checkout main^",
beforeCommand:
"git checkout HEAD^; git commit; git checkout main; git merge C2",
},
"afterMarkdowns": [
"Facile -- questo è quello a cui siamo abituati."
],
"command": "git checkout main^",
"beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2"
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"Ora invece proviamo a specificare il secondo genitore...",
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Ora invece proviamo a specificare il secondo genitore..."
],
afterMarkdowns: ["Vedi? Abbiamo seguito il secondo genitore verso l'alto."],
command: "git checkout main^2",
beforeCommand:
"git checkout HEAD^; git commit; git checkout main; git merge C2",
},
"afterMarkdowns": [
"Vedi? Abbiamo seguito il secondo genitore verso l'alto."
],
"command": "git checkout main^2",
"beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2"
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"I modificatori `^` e `~` riescono a farci muovere lungo l'albero dei commit in modo agevole:",
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"I modificatori `^` e `~` riescono a farci muovere lungo l'albero dei commit in modo agevole:"
],
afterMarkdowns: ["Super veloce!"],
command:
"git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2",
beforeCommand:
"git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit",
},
"afterMarkdowns": [
"Super veloce!"
],
"command": "git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2",
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit"
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"Ancora più sorprendente, questi modificatori possono essere concatenati tra loro! Dai un'occhiata:",
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Ancora più sorprendente, questi modificatori possono essere concatenati tra loro! Dai un'occhiata:"
],
afterMarkdowns: [
"Stessi passaggi di prima, ma tutto con un comando.",
"afterMarkdowns": [
"Stessi passaggi di prima, ma tutto con un comando."
],
command: "git checkout HEAD~^2~2",
beforeCommand:
"git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit",
},
"command": "git checkout HEAD~^2~2",
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit"
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"### Mettilo in pratica",
"",
"Per completare questo livello, crea un nuovo ramo alla destinazione specificata.",
"",
"Sarebbe facile specificare il commit direttamente (con qualcosa del tipo `C6`), ovvio, ma ti sfido invece a utilizare i modificatori di cui abbiamo parlato!",
],
},
},
],
"Sarebbe facile specificare il commit direttamente (con qualcosa del tipo `C6`), ovvio, ma ti sfido invece a utilizare i modificatori di cui abbiamo parlato!"
]
}
}
]
},
"tr_TR": {
"childViews": [
@ -1875,6 +1876,5 @@ exports.level = {
}
]
}
}
};

View file

@ -37,15 +37,15 @@ exports.level = {
"zh_CN": "用 'git branch <分支名>' 来创建分支,用 'git checkout <分支名>' 来切换到分支",
"zh_TW": "用 'git branch [ branch 名稱]' 來建立 branch用 'git checkout [ branch 名稱]' 切換到該 branch",
"ko": "\"git branch [브랜치명]\"으로 새 브랜치를 만들고, \"git checkout [브랜치명]\"로 그 브랜치로 이동하세요",
"ro": 'Creează o ramură nouă cu "git branch [nume-ramură]" și treci la ea cu "git checkout [nume-ramură]"',
"ro": "Creează o ramură nouă cu \"git branch [nume-ramură]\" și treci la ea cu \"git checkout [nume-ramură]\"",
"ru_RU": "Создай новую ветку при помощи \"git branch [name]\" и перейди на неё при помощи \"git checkout [name]\"",
"uk": "Створи нову гілку за допомогою \"git branch [ім’я]\" й перейди на неї за допомогою \"git checkout [ім’я]\"",
"vi": "Tạo một nhánh mới với lệnh \"git branch [ten-nhanh]\" và chuyển sang đó với lệnh \"git checkout [ten-nhanh]\"",
"sl_SI": "Naredi nov branch z \"git branch [ime-brancha]\" in ga checkoutaj z \"git checkout [ime-brancha]\"",
"pl": "Utwórz nową gałąź za pomocą \"git branch <nazwa-gałęzi>\" i przełącz się na nią za pomocą \"git checkout <nazwa-gałęzi>\"",
"it_IT": 'Crea un nuovo ramo con "git branch <branch-name>" e selezionalo con "git checkout <branch-name>"',
"it_IT": "Crea un nuovo ramo con \"git branch <branch-name>\" e selezionalo con \"git checkout <branch-name>\"",
"ta_IN": "இப்போது \"git branch <branch-name>\" கட்டளையை கொண்டு புதிய கிளை ஒன்றை உருவாக்குக பின் \"git checkout <branch-name>\" கொண்டு அந்த கிளைக்கு தாவுக",
"tr_TR": "Yeni bir branch oluşturmak için \"git branch <branch-name>\" komutunu kullanın ve \"git checkout <branch-name>\" komutu ile bu branch'e geçin.",
"tr_TR": "Yeni bir branch oluşturmak için \"git branch <branch-name>\" komutunu kullanın ve \"git checkout <branch-name>\" komutu ile bu branch'e geçin."
},
"disabledMap": {
"git revert": true
@ -841,7 +841,7 @@ exports.level = {
"markdowns": [
"*注意:在 Git 2.23 版本中,引入了一个名为 `git switch` 的新命令,最终会取代 `git checkout`,因为 `checkout` 作为单个命令有点超载(它承载了很多独立的功能)。",
"由于现在很多人还无法使用 `switch`,本次课程仍然使用 `checkout` 而不是 `switch`",
"但是如果你想尝试一下新命令,我们的应用也是支持的!并且你可以从<a href=\"https://git-scm.com/docs/git-switch\" target=\"_blank\">这里</a>学到更多关于新命令的内容。*",
"但是如果你想尝试一下新命令,我们的应用也是支持的!并且你可以从<a href=\"https://git-scm.com/docs/git-switch\" target=\"_blank\">这里</a>学到更多关于新命令的内容。*"
]
}
},
@ -1030,9 +1030,9 @@ exports.level = {
"",
"Pentru că nu există costuri suplimentare de stocare / memorie asociată cu crearea de multe ramuri, este mai ușor să îți împarți munca într-un mod logic decât să ai ramuri mari și greoaie.",
"",
'Când vom începe să combinăm ramuri și commit-uri, vom vedea cum aceste două caracteristici se îmbină bine. Pentru moment, doar reține că o ramură spune în esență "Vreau să includ munca acestui commit și a tuturor commit-urilor sale părinte."',
],
},
"Când vom începe să combinăm ramuri și commit-uri, vom vedea cum aceste două caracteristici se îmbină bine. Pentru moment, doar reține că o ramură spune în esență \"Vreau să includ munca acestui commit și a tuturor commit-urilor sale părinte.\""
]
}
},
{
"type": "GitDemonstrationView",
@ -1040,27 +1040,27 @@ exports.level = {
"beforeMarkdowns": [
"Să vedem cum arată ramurile în practică.",
"",
"Aici vom crea o ramură nouă numită `newImage`.",
"Aici vom crea o ramură nouă numită `newImage`."
],
"afterMarkdowns": [
"Iată, asta e tot ce trebuie să faci pentru a crea o ramură! Ramura `newImage` acum se referă la commit-ul `C1`.",
"Iată, asta e tot ce trebuie să faci pentru a crea o ramură! Ramura `newImage` acum se referă la commit-ul `C1`."
],
"command": "git branch newImage",
"beforeCommand": "",
},
"beforeCommand": ""
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Să încercăm să facem câteva modificări în această nouă ramură. Apasă butonul de mai jos.",
"Să încercăm să facem câteva modificări în această nouă ramură. Apasă butonul de mai jos."
],
"afterMarkdowns": [
'Oh nu! Ramura `main` s-a mutat, dar ramura `newImage` nu! Aceasta s-a întâmplat pentru că nu eram "pe" noua ramură, motiv pentru care asteriscul (*) era pe `main`.',
"Oh nu! Ramura `main` s-a mutat, dar ramura `newImage` nu! Aceasta s-a întâmplat pentru că nu eram \"pe\" noua ramură, motiv pentru care asteriscul (*) era pe `main`."
],
"command": "git commit",
"beforeCommand": "git branch newImage",
},
"beforeCommand": "git branch newImage"
}
},
{
"type": "GitDemonstrationView",
@ -1072,14 +1072,14 @@ exports.level = {
"git checkout <name>",
"```",
"",
"Aceasta ne va poziționa pe noua ramură înainte de a face commit cu modificările noastre.",
"Aceasta ne va poziționa pe noua ramură înainte de a face commit cu modificările noastre."
],
"afterMarkdowns": [
"Incredibil! Modificările noastre au fost înregistrate pe noua ramură.",
"Incredibil! Modificările noastre au fost înregistrate pe noua ramură."
],
"command": "git checkout newImage; git commit",
"beforeCommand": "git branch newImage",
},
"beforeCommand": "git branch newImage"
}
},
{
"type": "ModalAlert",
@ -1089,9 +1089,9 @@ exports.level = {
" deoarece acesta din urmă este oarecum suprasolicitată (face multe lucruri diferite în funcție de argumente). Lecțiile de aici vor folosi în continuare ",
"`checkout` în loc de `switch`, deoarece comanda `switch` este încă considerată experimentală și sintaxa sa se poate schimba în viitor.",
"Cu toate acestea, puteți încerca noua comandă `switch` în această aplicație, și de asemenea ",
'<a href="https://git-scm.com/docs/git-switch" target="_blank">poți afla mai multe aici</a>.* ',
],
},
"<a href=\"https://git-scm.com/docs/git-switch\" target=\"_blank\">poți afla mai multe aici</a>.* "
]
}
},
{
"type": "ModalAlert",
@ -1102,11 +1102,11 @@ exports.level = {
"",
"Apropo, iată o scurtătură: dacă vrei să creezi o nouă ramură",
" ȘI să treci pe ea în același timp, poți pur și simplu ",
"să scrii `git checkout -b [numele-ramurii]`.",
],
},
},
],
"să scrii `git checkout -b [numele-ramurii]`."
]
}
}
]
},
"ru_RU": {
"childViews": [
@ -1183,7 +1183,7 @@ exports.level = {
"создай ветку с именем bugFix и переключись на неё.",
"",
"Кстати вот тебе совет, ты можешь создать новую ветку и переключиться на неё",
"с помощью одной команды: ```git checkout -b [yourbranchname]```.",
"с помощью одной команды: ```git checkout -b [yourbranchname]```."
]
}
}
@ -1231,7 +1231,7 @@ exports.level = {
"Давайте спробуємо додати якусь інформацію до цієї нової гілки. Натисни кнопку внизу."
],
"afterMarkdowns": [
"От халепа! Гілка `main` просунулася вперед, але гілка `newImage` \u2014 ні! Це тому, що ми були не \"на новій гілці\". Через це зірочка (*) була поруч з `main`."
"От халепа! Гілка `main` просунулася вперед, але гілка `newImage` ні! Це тому, що ми були не \"на новій гілці\". Через це зірочка (*) була поруч з `main`."
],
"command": "git commit",
"beforeCommand": "git branch newImage"
@ -1647,9 +1647,9 @@ exports.level = {
"",
"Poiché non c'è un sovraccarico della memoria nel fare molti rami, è più semplice suddividere il lavoro piuttosto che avere rami enormi.",
"",
'Quando inizieremo a mischiare rami e commit, vedremo come queste caratteristiche si combinano. Per ora, però, ricorda che un ramo essenzialmente dice "Voglio includere il lavoro di questo commit e tutti i commit del genitore".',
],
},
"Quando inizieremo a mischiare rami e commit, vedremo come queste caratteristiche si combinano. Per ora, però, ricorda che un ramo essenzialmente dice \"Voglio includere il lavoro di questo commit e tutti i commit del genitore\"."
]
}
},
{
"type": "GitDemonstrationView",
@ -1657,27 +1657,27 @@ exports.level = {
"beforeMarkdowns": [
"Vediamo nella pratica cosa sono i rami.",
"",
"Qui creeremo un nuovo ramo di nome `newImage`.",
"Qui creeremo un nuovo ramo di nome `newImage`."
],
"afterMarkdowns": [
"Ecco, questa è la divisione in rami! Il ramo `newImage` ora punta al commit `C1`.",
"Ecco, questa è la divisione in rami! Il ramo `newImage` ora punta al commit `C1`."
],
"command": "git branch newImage",
"beforeCommand": "",
},
"beforeCommand": ""
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Proviamo ad aggiungere un po' di lavoro su questo nuovo ramo. Premi il pulsante qua sotto.",
"Proviamo ad aggiungere un po' di lavoro su questo nuovo ramo. Premi il pulsante qua sotto."
],
"afterMarkdowns": [
"Oh no! Il ramo `main` si è spostato ma il ramo `newImage` no! Questo perché non eravamo sul nuovo ramo, infatti l'asterisco (*) era su `main`.",
"Oh no! Il ramo `main` si è spostato ma il ramo `newImage` no! Questo perché non eravamo sul nuovo ramo, infatti l'asterisco (*) era su `main`."
],
"command": "git commit",
"beforeCommand": "git branch newImage",
},
"beforeCommand": "git branch newImage"
}
},
{
"type": "GitDemonstrationView",
@ -1689,14 +1689,14 @@ exports.level = {
"git checkout <name>",
"```",
"",
"Questo ci metterà sul nuovo ramo prima di fare un nuovo commit.",
"Questo ci metterà sul nuovo ramo prima di fare un nuovo commit."
],
"afterMarkdowns": [
"Ecco qua! I cambiamenti sono stati memorizzati sul nuovo ramo.",
"Ecco qua! I cambiamenti sono stati memorizzati sul nuovo ramo."
],
"command": "git checkout newImage; git commit",
"beforeCommand": "git branch newImage",
},
"beforeCommand": "git branch newImage"
}
},
{
"type": "ModalAlert",
@ -1705,9 +1705,9 @@ exports.level = {
"*Nota: In Git versione 2.23, è stato introdotto un nuovo comando, `git switch`, per sostituire `git checkout`, ",
"che è sovraccaricato di funzionalità (fa un sacco di cose diverse). Queste lezioni usano comunque ",
"`checkout` invece che `switch` perché molti non hanno ancora accesso a `switch`, ma quest'app supporta comunque il comando ",
'se sei curioso di provarlo! Potete <a href="https://git-scm.com/docs/git-switch" target="_blank">scoprire di più qui</a>.* ',
],
},
"se sei curioso di provarlo! Potete <a href=\"https://git-scm.com/docs/git-switch\" target=\"_blank\">scoprire di più qui</a>.* "
]
}
},
{
"type": "ModalAlert",
@ -1718,11 +1718,11 @@ exports.level = {
"",
"Comunque, c'è una scorciatoia: se vuoi creare un nuovo ",
"ramo E selezionarlo in un solo passaggio, puoi semplicemente ",
"digitare `git checkout -b [yourbranchname]`.",
],
},
},
],
"digitare `git checkout -b [yourbranchname]`."
]
}
}
]
},
"tr_TR": {
"childViews": [
@ -1817,6 +1817,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -9,16 +9,16 @@ exports.level = {
"gl": "Introducción ós commits de Git",
"fr_FR": "Introduction aux commits avec Git",
"ja": "Gitのコミット",
'ko': 'Git 커밋 소개',
'zh_CN': 'Git Commit',
'zh_TW': '介紹 git commit ',
'ro': "Introducere în Git Commit",
'ru_RU': 'Знакомство с Git Commit ',
'uk': 'Знайомство з комітами в Git',
'vi': 'Giới thiệu về Git Commit',
'sl_SI': "Uvod v Git Commit",
'pl': "Wprowadzenie do commitów Gita",
'it_IT': "Introduzione ai commit in Git",
"ko": "Git 커밋 소개",
"zh_CN": "Git Commit",
"zh_TW": "介紹 git commit ",
"ro": "Introducere în Git Commit",
"ru_RU": "Знакомство с Git Commit ",
"uk": "Знайомство з комітами в Git",
"vi": "Giới thiệu về Git Commit",
"sl_SI": "Uvod v Git Commit",
"pl": "Wprowadzenie do commitów Gita",
"it_IT": "Introduzione ai commit in Git",
"ta_IN": "கிட் கமிட்கள் ஒரு அறிமுகம்",
"tr_TR": "Git Commit'e Giriş"
},
@ -41,10 +41,10 @@ exports.level = {
"ro": "Scrie 'git commit' de două ori pentru a termina!",
"ru_RU": "Попробуй дважды выполнить команду 'git commit' ;)",
"uk": "Спробуй двічі виконати команду 'git commit' ;)",
'vi': "Đơn giản là cứ gõ 'git commit' 2 lần",
'sl_SI': "Preprosto dvakrat vpiši 'git commit' in zaključi!",
"vi": "Đơn giản là cứ gõ 'git commit' 2 lần",
"sl_SI": "Preprosto dvakrat vpiši 'git commit' in zaključi!",
"pl": "Aby zakończyć, wystarczy dwukrotnie wpisać 'git commit'!",
'it_IT': "Digita 'git commit' due volte per finire!",
"it_IT": "Digita 'git commit' due volte per finire!",
"ta_IN": "இந்த நிலையை நிரைவு செய்ய 'git commit' என்று இரண்டு முறை தட்டச்சு செய்க!",
"tr_TR": "Bölümü bitirmek için sadece iki kere 'git commit' yazmanız yeterlidir."
},
@ -575,13 +575,13 @@ exports.level = {
"## Git Commits",
"Un commit într-un repozitoriu Git înregistrează o captură (snapshot) a tuturor fișierelor (urmărite) din directorul tău. E ca un copy&paste uriaș, dar mult mai bun!",
"",
'Git vrea să păstreze commit-urile cât mai simplu posibil, astfel că nu copiază pur și simplu întregul director de fiecare dată când faci un commit. Poate (dacă este posibil) să comprime un commit ca un set de modificări, sau un "delta", de la o versiune a repozitoriului la următoarea.',
"Git vrea să păstreze commit-urile cât mai simplu posibil, astfel că nu copiază pur și simplu întregul director de fiecare dată când faci un commit. Poate (dacă este posibil) să comprime un commit ca un set de modificări, sau un \"delta\", de la o versiune a repozitoriului la următoarea.",
"",
"Git, de asemenea, păstrează un istoric al commit-urilor, care și când au fost făcute. De aceea majoritatea commit-urilor au commit-uri anterioare deasupra lor -- afișăm acest lucru cu săgeți în vizualizarea noastră. Păstrarea istoricului este utilă pentru toți cei care lucrează la proiect!",
"",
"Este mult de învățat, dar pentru moment poți să te gândești la commit-uri ca la capturi/versiuni ale proiectului. Commit-urile sunt foarte ușoare și schimbarea între ele este extrem de rapidă!",
],
},
"Este mult de învățat, dar pentru moment poți să te gândești la commit-uri ca la capturi/versiuni ale proiectului. Commit-urile sunt foarte ușoare și schimbarea între ele este extrem de rapidă!"
]
}
},
{
"type": "GitDemonstrationView",
@ -589,24 +589,24 @@ exports.level = {
"beforeMarkdowns": [
"Dați să vedem cum arată asta în practică. În dreapta avem o vizualizare a unui (mic) repozitoriu Git. La moment avem două commit-uri -- primul commit inițial, `C0`, și un commit după acesta, `C1`, care ar putea avea unele modificări semnificative.",
"",
"Dați click pe butonul de mai jos pentru a face un nou commit.",
"Dați click pe butonul de mai jos pentru a face un nou commit."
],
"afterMarkdowns": [
"Super! Tocmai am făcut modificări în repozitoriu și le-am salvat ca un commit. Commit-ul pe care tocmai l-am făcut are un părinte, `C1`, care face referire la rândul său la commit-ul în baza căruia a fost făcut.",
"Super! Tocmai am făcut modificări în repozitoriu și le-am salvat ca un commit. Commit-ul pe care tocmai l-am făcut are un părinte, `C1`, care face referire la rândul său la commit-ul în baza căruia a fost făcut."
],
"command": "git commit",
"beforeCommand": "",
},
"beforeCommand": ""
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Acum, încearcă și tu! După ce această fereastră se va închide, fă două commit-uri pentru a termina nivelul.",
],
},
},
],
"Acum, încearcă și tu! După ce această fereastră se va închide, fă două commit-uri pentru a termina nivelul."
]
}
}
]
},
"ru_RU": {
"childViews": [
@ -661,7 +661,7 @@ exports.level = {
"",
"Git намагається зберігати коміти якнайпростіше й ефективніше, тому він не просто копіює всю директорію при кожному коміті. Він може стиснути коміт в набір правок чи \"дельту\" між двома версіями репозиторію.",
"",
"Git також зберігає історію коли і ким був створений той чи інший коміт. Тому більшість комітів мають комітів-предків, що знаходяться вище в ієрархії \u2014 ми це зображуємо стрілочками в нашій візуалізації. Історія \u2014 це необхідна річ для кожного, хто працює з конкретним проектом.",
"Git також зберігає історію коли і ким був створений той чи інший коміт. Тому більшість комітів мають комітів-предків, що знаходяться вище в ієрархії ми це зображуємо стрілочками в нашій візуалізації. Історія це необхідна річ для кожного, хто працює з конкретним проектом.",
"",
"Тут є багато над чим подумати, але наразі ти можеш уявляти коміти як моментальні знімки проекту. Коміти майже невагомі й перемикання між ними дуже швидке."
]
@ -861,46 +861,46 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Commits",
"Un commit in git memorizza un'instantanea di tutti i file (tracciati) della cartella di lavoro. È come un enorme copia-incolla, ma migliore!",
"",
'Git conserva i commit nel modo più leggero possibile, perciò non copia ciecamente l\'intera cartella per ogni commit. Può (ove possibile) comprimere un commit come un insieme di cambiamenti, o "delta", da una versione alla successiva del repository.',
"Git conserva i commit nel modo più leggero possibile, perciò non copia ciecamente l'intera cartella per ogni commit. Può (ove possibile) comprimere un commit come un insieme di cambiamenti, o \"delta\", da una versione alla successiva del repository.",
"",
"Git memorizza anche la storia di tutti i commit effettuati. Questo è il motivo per cui molti commit hanno genitori sopra di essi -- questo viene rappresentato con delle frecce nelle nostre spiegazioni. Conoscere la storia è utilissimo per tutti quelli che collaborano ad un progetto!",
"",
"C'è tanto da imparare, ma per ora pensa ai commit come a delle instantanee del progetto. I commit sono leggerissimi e si può passare da uno all'altro in un battibaleno!",
],
},
"C'è tanto da imparare, ma per ora pensa ai commit come a delle instantanee del progetto. I commit sono leggerissimi e si può passare da uno all'altro in un battibaleno!"
]
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Vediamolo in pratica. Sulla destra abbiamo l'immagine di un (piccolo) repository git. Ci sono due commit -- il primo commit, `C0`, e un altro dopo, `C1`, che potrebbe avere modifiche importanti.",
"",
"Premi il pulsante qua sotto per eseguire un nuovo commit.",
"Premi il pulsante qua sotto per eseguire un nuovo commit."
],
afterMarkdowns: [
"Ecco qua! Fantastico. Abbiamo modificato il repository e salvato con un commit. Il commit che abbiamo creato ha un genitore, `C1`, che ci indica su chi è basato il nostro commit.",
"afterMarkdowns": [
"Ecco qua! Fantastico. Abbiamo modificato il repository e salvato con un commit. Il commit che abbiamo creato ha un genitore, `C1`, che ci indica su chi è basato il nostro commit."
],
command: "git commit",
beforeCommand: "",
},
"command": "git commit",
"beforeCommand": ""
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"Vai avanti e prova da solo! Dopo che questa finestra si chiude, crea due commit per completare il livello.",
],
},
},
],
"type": "ModalAlert",
"options": {
"markdowns": [
"Vai avanti e prova da solo! Dopo che questa finestra si chiude, crea due commit per completare il livello."
]
}
}
]
},
"tr_TR": {
"childViews": [
@ -928,7 +928,7 @@ exports.level = {
"Yeni bir commit için aşağıdaki düğmeye tıklayın."
],
"afterMarkdowns": [
"İşte bu! Harika. Depoya değişiklikler yaptık ve onları bir commit olarak kaydettik. Yeni yaptığımız commit'in bir atası var, `C1`, bu da commit\'imizin ne üzerine inşa edildiğini gösteren bir referans içerir."
"İşte bu! Harika. Depoya değişiklikler yaptık ve onları bir commit olarak kaydettik. Yeni yaptığımız commit'in bir atası var, `C1`, bu da commit'imizin ne üzerine inşa edildiğini gösteren bir referans içerir."
],
"command": "git commit",
"beforeCommand": ""
@ -943,6 +943,6 @@ exports.level = {
}
}
]
},
},
}
}
};

View file

@ -20,29 +20,29 @@ exports.level = {
"vi": "Gộp nhánh trong Git",
"sl_SI": "Merganje v Gitu",
"pl": "Merge w Gicie",
'it_IT': "Fusione in Git",
"it_IT": "Fusione in Git",
"ta_IN": "கிட்டில் இணைத்தல்",
"tr_TR": "Git'te Merge işlemleri"
},
"hint": {
"en_US": "Remember to commit in the order specified (bugFix before main)",
"de_DE": "Denk dran in der angegebenen Reihenfolge zu committen (erst bugFix, dann main)",
"ja": "指示された順番でコミットすることmainの前にbugFixで",
"ja": "指示された順番でコミットすることmainの前にbugFixで",
"es_AR": "Acordate de commitear en el orden especificado (bugFix antes de main)",
"es_MX": "Acuérdate de hacer commit en el orden especificado (bugFix antes de main)",
"es_ES": "Acuérdate de hacer commit en el orden especificado (bugFix antes de main)",
"pt_BR": "Lembre-se de commitar na ordem especificada (bugFix antes de main)",
"gl": "Lembrate de facer commit na orde específica (bugFix antes de main)",
"gl": "Lembrate de facer commit na orde específica (bugFix antes de main)",
"fr_FR": "Pensez à faire des commits dans l'ordre indiqué (bugFix avant main)",
"zh_CN": "要按目标窗口中指定的顺序进行提交bugFix 先于 main",
"zh_TW": "記住按指定的順序 commitbugFix 比 main 優先)",
"ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 main에 커밋)",
"ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 main에 커밋)",
"ro": "Nu uita să faci commit în ordinea specificată (bugFix înainte de main)",
"ru_RU": "Не забудь делать коммиты в правильном порядке (сначала bugFix, потом main)",
"uk": "Не забудь робити коміти в правильному порядку (спочатку bugFix, а вже потім main)",
"vi": "Nhớ là commit theo đúng thứ tự (bugFix trước main)",
"sl_SI": 'Zapomni si, da je potrebno commitati v pravilnem vrstnem redu (bugfix pred main)',
"pl": "Pamiętaj, aby commitować w określonej kolejności (bugFix przed main)",
"uk": "Не забудь робити коміти в правильному порядку (спочатку bugFix, а вже потім main)",
"vi": "Nhớ là commit theo đúng thứ tự (bugFix trước main)",
"sl_SI": "Zapomni si, da je potrebno commitati v pravilnem vrstnem redu (bugfix pred main)",
"pl": "Pamiętaj, aby commitować w określonej kolejności (bugFix przed main)",
"it_IT": "Ricorda di effettuare i commit nell'ordine specificato (bugFix prima di main)",
"ta_IN": "bugFix முன் main என்ற கொடுக்கப்பட்ட வரிசையில் கட்டலை இடுவதை கருத்தில் கொள்க",
"tr_TR": "Belirlenen sırada commit etmeyi unutmayın (main'den önce bugFix)"
@ -879,8 +879,8 @@ exports.level = {
}
]
},
ro: {
childViews: [
"ro": {
"childViews": [
{
"type": "ModalAlert",
"options": {
@ -889,45 +889,45 @@ exports.level = {
"",
"Perfect! Deja știm cum să facem commit și să creăm ramuri. Acum trebuie să învățăm o modalitate de a combina munca din două ramuri diferite. Acest lucru ne va permite să ne ramificăm, să dezvoltăm o nouă funcționalitate și apoi să o combinăm înapoi.",
"",
'Primul mod de a combina munca pe care îl vom examina este `git merge`. Combinarea în Git creează un commit special care are doi părinți unici. Un commit cu doi părinți înseamnă, în esență, "Vreau să includ toată munca de la acest părinte și de la celălalt părinte, *și* setul tuturor părinților lor."',
"Primul mod de a combina munca pe care îl vom examina este `git merge`. Combinarea în Git creează un commit special care are doi părinți unici. Un commit cu doi părinți înseamnă, în esență, \"Vreau să includ toată munca de la acest părinte și de la celălalt părinte, *și* setul tuturor părinților lor.\"",
"",
"Este mai ușor cu o vizualizare, să vedem în următoarea pagină.",
],
},
"Este mai ușor cu o vizualizare, să vedem în următoarea pagină."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
'Aici avem două ramuri; fiecare are un commit care este unic. Acest lucru înseamnă că nici o ramură nu include setul complet de "muncă" pe care l-am făcut în repozitoriu. Să rezolvăm asta cu un merge.',
"Aici avem două ramuri; fiecare are un commit care este unic. Acest lucru înseamnă că nici o ramură nu include setul complet de \"muncă\" pe care l-am făcut în repozitoriu. Să rezolvăm asta cu un merge.",
"",
"Vom `merge(combina)` ramura `bugFix` în `main`.",
"Vom `merge(combina)` ramura `bugFix` în `main`."
],
"afterMarkdowns": [
"Wow! Ai văzut asta? În primul rând, `main` acum indică către un commit care are doi părinți. Dacă urmezi săgețile în sus de la `main`, vei trece prin fiecare commit până la rădăcină. Asta înseamnă că `main` conține acum toată munca din repozitoriu.",
"",
"De asemenea, ai văzut cum s-au schimbat culorile commit-urilor? Pentru a ajuta la învățare, am inclus o legendă de culori. Fiecare ramură are o culoare unică. Fiecare commit devine culoarea rezultată din amestecarea culorilor tuturor ramurilor care îl conțin.",
"",
"Așa că aici vedem că culoarea ramurii `main` este amestecată în toate commit-urile, dar culoarea `bugFix` nu este. Să reparăm asta...",
"Așa că aici vedem că culoarea ramurii `main` este amestecată în toate commit-urile, dar culoarea `bugFix` nu este. Să reparăm asta..."
],
"command": "git merge bugFix",
"beforeCommand":
"git checkout -b bugFix; git commit; git checkout main; git commit",
},
"beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": ["Hai să combinăm ramura `main` în `bugFix`:"],
"beforeMarkdowns": [
"Hai să combinăm ramura `main` în `bugFix`:"
],
"afterMarkdowns": [
"Deoarece `bugFix` era un strămoș al lui `main`, git nu a trebuit să facă nimic; pur și simplu a mutat `bugFix` la același commit la care era atașat `main`.",
"",
"Acum toate commit-urile au aceeași culoare, ceea ce înseamnă că fiecare ramură conține toată munca din repozitoriu! Yay!",
"Acum toate commit-urile au aceeași culoare, ceea ce înseamnă că fiecare ramură conține toată munca din repozitoriu! Yay!"
],
"command": "git checkout bugFix; git merge main",
"beforeCommand":
"git checkout -b bugFix; git commit; git checkout main; git commit; git merge bugFix",
},
"beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit; git merge bugFix"
}
},
{
"type": "ModalAlert",
@ -942,11 +942,11 @@ exports.level = {
"* Fă un alt commit",
"* Combină ramura `bugFix` în `main` folosind `git merge`",
"",
"*Ține minte, poți oricând să reafișezi acest dialog tastând `objective`!*",
],
},
},
],
"*Ține minte, poți oricând să reafișezi acest dialog tastând `objective`!*"
]
}
}
]
},
"ru_RU": {
"childViews": [
@ -1363,59 +1363,59 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## Rami e fusione",
"",
"Ottimo! Ora sappiamo come funzionano i commit e i rami. Adesso dobbiamo trovare il modo per unire il lavoro di due rami diversi. Questo ci permetterà di creare un nuovo ramo, aggiungere una nuova funzionalità, e poi riunire il tutto.",
"",
'Il primo metodo che vediamo per unire il lavoro è `git merge` (fusione). La fusione in Git crea un commit speciale che possiede due genitori distinti. Un commit con due genitori significa "Voglio unire tutto il lavoro da questo e da quest\' altro genitore, *e anche* di tutti i loro genitori."',
"Il primo metodo che vediamo per unire il lavoro è `git merge` (fusione). La fusione in Git crea un commit speciale che possiede due genitori distinti. Un commit con due genitori significa \"Voglio unire tutto il lavoro da questo e da quest' altro genitore, *e anche* di tutti i loro genitori.\"",
"",
"È più semplice con le immagini, vediamolo nella prossima schermata.",
],
},
"È più semplice con le immagini, vediamolo nella prossima schermata."
]
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
'Qui abbiamo due rami; ognuno di essi ha un commit univoco. Ciò significa che nessuno dei rami contiene per intero il "lavoro" del repository. Sistemiamo le cose con una fusione.',
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Qui abbiamo due rami; ognuno di essi ha un commit univoco. Ciò significa che nessuno dei rami contiene per intero il \"lavoro\" del repository. Sistemiamo le cose con una fusione.",
"",
"Ora facciamo `merge` del ramo `bugFix` nel `main`.",
"Ora facciamo `merge` del ramo `bugFix` nel `main`."
],
afterMarkdowns: [
"afterMarkdowns": [
"WOW! Visto? Prima di tutto, `main` ora punta a un commit con due genitori. Se ripercorri l'albero dei commit dal `main`, potrai attraversare tutti i commit fino alla radice (root). Questo significa che `main` ora contiene tutto il lavoro del repository.",
"",
"Hai visto come è cambiato il colore del commit? Per imparare più facilmente, ho aggiunto i colori. Ogni ramo ha un colore univoco. Ogni (merge) commit ha un colore che è la combinazione dei colori dei rami che lo compongono.",
"",
"Qui vediamo che il colore del ramo `main` è la combinazione di tutti i commit , ma il colore di `bugFix` è diverso. Sistemiamolo...",
"Qui vediamo che il colore del ramo `main` è la combinazione di tutti i commit , ma il colore di `bugFix` è diverso. Sistemiamolo..."
],
command: "git merge bugFix",
beforeCommand:
"git checkout -b bugFix; git commit; git checkout main; git commit",
},
"command": "git merge bugFix",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit"
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: ["Fondiamo `main` in `bugFix`:"],
afterMarkdowns: [
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Fondiamo `main` in `bugFix`:"
],
"afterMarkdowns": [
"Visto che `bugFix` era un antenato di `main`, git non ha dovuto fare nulla di che; ha semplicemente spostato `bugFix` sullo stesso commit in cui era collegato `main`.",
"",
"Ora tutti i commit hanno lo stesso colore, il che significa che ogni ramo contiene tutto il lavoro del repository! WoWoWoW!",
"Ora tutti i commit hanno lo stesso colore, il che significa che ogni ramo contiene tutto il lavoro del repository! WoWoWoW!"
],
command: "git checkout bugFix; git merge main",
beforeCommand:
"git checkout -b bugFix; git commit; git checkout main; git commit; git merge bugFix",
},
"command": "git checkout bugFix; git merge main",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit; git merge bugFix"
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"Per completare questo livello, esegui i seguenti passaggi:",
"",
"* Crea un nuovo ramo di nome `bugFix`",
@ -1425,11 +1425,11 @@ exports.level = {
"* Esegui un nuovo commit",
"* Fondi il ramo `bugFix` nel `main` con `git merge`",
"",
'*Ricorda, puoi sempre rivedere questa schermata digitando "objective"!*',
],
},
},
],
"*Ricorda, puoi sempre rivedere questa schermata digitando \"objective\"!*"
]
}
}
]
},
"tr_TR": {
"childViews": [
@ -1499,6 +1499,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -18,8 +18,8 @@ exports.level = {
"ru_RU": "Введение в rebase",
"uk": "Знайомство з rebase",
"vi": "Giới thiệu về rebase",
'sl_SI': 'Uvod v Rebase',
'it_IT': "Introduzione al rebase (ribasare)",
"sl_SI": "Uvod v Rebase",
"it_IT": "Introduzione al rebase (ribasare)",
"pl": "Wprowadzenie do Rebase",
"ta_IN": "Rebase அறிமுகம்",
"tr_TR": "Rebase İşlemine Giriş"
@ -41,8 +41,8 @@ exports.level = {
"ru_RU": "Убедись, что сделал коммит в ветке bugFix",
"uk": "Впевнись, що зробив коміт в гілці bugFix",
"vi": "Hãy chắc chắn rằng bạn commit từ bugFix trước",
'sl_SI': 'Prepričaj se, da si najprej commital bugFix.',
'it_IT': "Assicurati di fare prima il commit da bugFix",
"sl_SI": "Prepričaj se, da si najprej commital bugFix.",
"it_IT": "Assicurati di fare prima il commit da bugFix",
"pl": "Upewnij się, że masz już commit z bugFix",
"ta_IN": "முதலில் bugFix இல் இருந்து commit செய்ய நீங்கள் உறுதி செய்யவும்",
"tr_TR": "Önce bugFix'ten commit attığınıza emin olun"
@ -628,12 +628,12 @@ exports.level = {
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Nous sommes désormais positionnés sur la branche `main`. Continuons en faisant le rebase sur `bugFix`…",
"Nous sommes désormais positionnés sur la branche `main`. Continuons en faisant le rebase sur `bugFix`…"
],
"afterMarkdowns": [
"Et voilà ! Puisque `main` était un ascendant de `bugFix`, Git a simplement déplacé la référence de la branche `main` en avant dans le temps.",
"",
"Maintenant que vous avez vu comment cela fonctionne, essayons ce niveau !",
"Maintenant que vous avez vu comment cela fonctionne, essayons ce niveau !"
],
"command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase main; git checkout main"
@ -865,13 +865,13 @@ exports.level = {
"markdowns": [
"## Git Rebase",
"",
'A doua modalitate de a combina munca între ramuri este *rebase*. Rebase practic ia un set de commit-uri, le "copiază" și le plasează în altă parte.',
"A doua modalitate de a combina munca între ramuri este *rebase*. Rebase practic ia un set de commit-uri, le \"copiază\" și le plasează în altă parte.",
"",
"Deși poate părea confuz, avantajul rebase este că poate fi folosit pentru a crea o secvență de commit-uri liniară și mai frumoasă. Istoria commit-urilor din repozitoriu va fi mult mai curată dacă se utilizează doar rebase.",
"",
"Hai să vedem cum funcționează...",
],
},
"Hai să vedem cum funcționează..."
]
}
},
{
"type": "GitDemonstrationView",
@ -881,32 +881,31 @@ exports.level = {
"",
"Am dori să mutăm munca noastră de pe bugFix direct peste munca de pe main. Astfel, ar părea că aceste două funcționalități au fost dezvoltate secvențial, când de fapt au fost dezvoltate în paralel.",
"",
"Vom face asta cu comanda `git rebase`.",
"Vom face asta cu comanda `git rebase`."
],
"afterMarkdowns": [
'Minunat! Acum munca de pe ramura "bugFix" este chiar deasupra celei de pe "main" și avem o secvență liniară de commit-uri.',
"Minunat! Acum munca de pe ramura \"bugFix\" este chiar deasupra celei de pe \"main\" și avem o secvență liniară de commit-uri.",
"",
'Observați că commit-ul C3 încă există undeva (apare decolorat în arbore), iar C3\' este "copia" pe care am făcut-o prin rebase pe main.',
"Observați că commit-ul C3 încă există undeva (apare decolorat în arbore), iar C3' este \"copia\" pe care am făcut-o prin rebase pe main.",
"",
"Singura problemă este că main nu a fost actualizat, să rezolvăm asta acum...",
"Singura problemă este că main nu a fost actualizat, să rezolvăm asta acum..."
],
"command": "git rebase main",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit",
},
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Acum suntem pe ramura `main`. Să continuăm și să facem rebase pe `bugFix`...",
"Acum suntem pe ramura `main`. Să continuăm și să facem rebase pe `bugFix`..."
],
"afterMarkdowns": [
"Iată! Deoarece `main` era un strămoș al `bugFix`, git a mutat pur și simplu referința ramurii `main` înainte în istorie.",
"Iată! Deoarece `main` era un strămoș al `bugFix`, git a mutat pur și simplu referința ramurii `main` înainte în istorie."
],
"command": "git rebase bugFix",
"beforeCommand":
"git commit; git checkout -b bugFix C1; git commit; git rebase main; git checkout main",
},
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase main; git checkout main"
}
},
{
"type": "ModalAlert",
@ -919,11 +918,11 @@ exports.level = {
"* Întoarceți-vă la `main` și faceți un alt commit",
"* Faceți checkout pe `bugFix` din nou și faceți rebase pe `main`",
"",
"Mult succes!",
],
},
},
],
"Mult succes!"
]
}
}
]
},
"ru_RU": {
"childViews": [
@ -1261,60 +1260,59 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Rebase",
"",
'Il secondo modo per unire il lavoro tra rami è il *rebasing* (ribasare). Quando si ribasa vengono presi una serie di commit, vengono "copiati", e incollati da qualche parte.',
"Il secondo modo per unire il lavoro tra rami è il *rebasing* (ribasare). Quando si ribasa vengono presi una serie di commit, vengono \"copiati\", e incollati da qualche parte.",
"",
"Anche se sembra un sistema complesso, il vantaggio del rebasing è che può essere usato per creare una sequenza lineare di commit. Il log / storia dei commit del repository sarebbe molto più ordinata e comprensibile se fosse consentito solo il rebasing.",
"",
"Vediamolo in azione...",
],
},
"Vediamolo in azione..."
]
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Anche qui abbiamo ancora due rami; prestate attenzione al fatto che il ramo selezionato è bugFix (notare l'asterisco*)",
"",
"Ora vogliamo spostare il nostro lavoro dal ramo bugFix direttamente sul ramo main. In questo modo sembrerà che i due lavori sono stati sviluppati in sequenza, quando in realtà sono stati sviluppati in parallelo.",
"",
"Vediamo il comando `git rebase` all'opera.",
"Vediamo il comando `git rebase` all'opera."
],
afterMarkdowns: [
"afterMarkdowns": [
"Fantastico! Ora il lavoro del ramo bugFix è sopra al main e abbiamo una sequenza lineare di commit.",
"",
'Nota che il commit C3 continua ad esistere (messo in trasparenza), e C3\' è la "copia" che abbiamo ribasato sul main.',
"Nota che il commit C3 continua ad esistere (messo in trasparenza), e C3' è la \"copia\" che abbiamo ribasato sul main.",
"",
"L'unico problema è che il main non è ancora stato aggiornato, facciamolo ora...",
"L'unico problema è che il main non è ancora stato aggiornato, facciamolo ora..."
],
command: "git rebase main",
beforeCommand: "git commit; git checkout -b bugFix C1; git commit",
},
"command": "git rebase main",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit"
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"Ora il ramo selezionato è il main. Procediamo e facciamo rebase su `bugFix`...",
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Ora il ramo selezionato è il main. Procediamo e facciamo rebase su `bugFix`..."
],
afterMarkdowns: [
"Ecco qua! Visto che main era un antenato di `bugFix`, git sposta semplicemente il riferimento al ramo `main` in avanti.",
"afterMarkdowns": [
"Ecco qua! Visto che main era un antenato di `bugFix`, git sposta semplicemente il riferimento al ramo `main` in avanti."
],
command: "git rebase bugFix",
beforeCommand:
"git commit; git checkout -b bugFix C1; git commit; git rebase main; git checkout main",
},
"command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase main; git checkout main"
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"Per completare questo livello, esegui i seguenti passaggi",
"",
"* Crea un nuovo ramo di nome `bugFix`",
@ -1322,11 +1320,11 @@ exports.level = {
"* Torna al main e crea un nuovo commit",
"* Seleziona nuovamente bugFix e fai rebase sul main",
"",
"In bocca al lupo!",
],
},
},
],
"In bocca al lupo!"
]
}
}
]
},
"ta_IN": {
"childViews": [
@ -1461,6 +1459,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -22,16 +22,15 @@ exports.level = {
"gl": "Git Describe",
"zh_TW": "git describe",
"zh_CN": "Git Describe",
"ro":"Git Describe",
"ro": "Git Describe",
"ru_RU": "Git describe",
"ko": "Git describe(묘사)",
"ko": "Git 설명",
"uk": "Git Describe",
"vi": "Git Describe (mô tả)",
"sl_SI": "Git Describe",
"it_IT": "Git Describe",
"pl": "Git describe",
"tr_TR": "git describe",
"ko": "Git 설명",
"ta_IN": "Git விவரம்"
},
"hint": {
@ -375,69 +374,6 @@ exports.level = {
}
]
},
"es_ES": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Git Describe",
"",
"Como los tags sirven genial como \"marcas\" en el código, git tiene un comando para _describir_ dónde estás relativo a la \"marca\" (es decir, al \"tag\") más cercana. Y ese comamndo se llama ¡`git describe`!",
"",
"`git describe` puede ayudarte a saber dónde estás después de haberte movido varios commits hacia adelante o atrás en la historia. Esto puede pasarte después de que termines un _git bisect_ (una búsqueda de debug) o cuando te sientas delante de la computadora de un compañero de trabajo que acaba de volver de vacaciones."
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Git describe tiene la siguiente forma:",
"",
"`git describe <ref>`",
"",
"Donde `<ref>` es cualquier cosa que git puede resolver a un commit. Si no especificas ninguna referencia, git simplemente usa el commit en el que estás en ese momento (`HEAD`).",
"",
"La salida de ese comando se ve así:",
"",
"`<tag>_<numCommits>_g<hash>`",
"",
"Donde `tag` es el tag más cercano en la historia, `numCommits` es a cuántos commits de ese tag estás, y `<hash>` es el hash del commit que está siendo descrito."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Veamos un ejemplo rápido. Para este árbol de commits:"
],
"afterMarkdowns": [
"El comando `git describe main` mostraría:",
"",
"`v1_2_gC2`",
"",
"Mientras que `git describe side` mostraría:",
"",
"`v2_1_gC4`"
],
"command": "git tag v2 C3",
"beforeCommand": "git commit; go -b side HEAD~1; gc; gc; git tag v1 C0"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"¡Eso es prácticamente todo lo que hay sobre git describe! Prueba describiendo algunas _ubicaciones_ en este nivel para familiarizarte con el comando.",
"",
"Cuando estés listo, crea un commit para terminar el nivel. Te estamos dejando este nivel de regalo. :P"
]
}
}
]
},
"es_ES": {
"childViews": [
{
@ -783,7 +719,7 @@ exports.level = {
"",
"`<tag>_<numCommits>_g<hash>`",
"",
"Unde `tag` este cel mai apropiat tag din istorie, `numCommits` este numărul de commit-uri până la acel tag, iar `<hash>` este hash-ul commit-ului pe care îl descrii.",
"Unde `tag` este cel mai apropiat tag din istorie, `numCommits` este numărul de commit-uri până la acel tag, iar `<hash>` este hash-ul commit-ului pe care îl descrii."
]
}
},
@ -1197,23 +1133,23 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"### Git Describe",
"",
'Visto che i tag fungono da "ancore", si può usare il comando `git describe` per capire dove ci si trova in riferimento all\'"ancora" (tag) più vicina!',
"Visto che i tag fungono da \"ancore\", si può usare il comando `git describe` per capire dove ci si trova in riferimento all'\"ancora\" (tag) più vicina!",
"",
"Git describe aiuta ad orientarti dopo che hai creato molti commit su per giù nell'albero; oppure dopo che hai concluso un git bisect (per ricercare bug) o quando utilizzi il computer di un collega che è appena tornato dalle vacanze.",
],
},
"Git describe aiuta ad orientarti dopo che hai creato molti commit su per giù nell'albero; oppure dopo che hai concluso un git bisect (per ricercare bug) o quando utilizzi il computer di un collega che è appena tornato dalle vacanze."
]
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"Git describe ha questa forma:",
"",
"`git describe <ref>`",
@ -1224,41 +1160,40 @@ exports.level = {
"",
"`<tag>_<numCommits>_g<hash>`",
"",
"Dove `tag` è il tag antenato più vicino, `numCommits` corrisponde al numero di commit tra ref e il tag, e `<hash>` è l'hash del commit che è descritto.",
],
},
"Dove `tag` è il tag antenato più vicino, `numCommits` corrisponde al numero di commit tra ref e il tag, e `<hash>` è l'hash del commit che è descritto."
]
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"Vediamo un esempio semplice. In quest'albero:",
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Vediamo un esempio semplice. In quest'albero:"
],
afterMarkdowns: [
"afterMarkdowns": [
"Il comando `git describe main` genera come output:",
"",
"`v1_2_gC2`",
"",
"Mentre `git describe side` genererà:",
"",
"`v2_1_gC4`",
"`v2_1_gC4`"
],
command: "git tag v2 C3",
beforeCommand:
"git commit; go -b side HEAD~1; gc; gc; git tag v1 C0",
},
"command": "git tag v2 C3",
"beforeCommand": "git commit; go -b side HEAD~1; gc; gc; git tag v1 C0"
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"Questo è più o meno quanto fa git describe! Prova questo comando in vari punti in questo livello per prendere confidenza.",
"",
"Quando hai finito, procedi e crea un commit per concludere il livello. Consideralo un omaggio della casa :P",
],
},
},
],
"Quando hai finito, procedi e crea un commit per concludere il livello. Consideralo un omaggio della casa :P"
]
}
}
]
},
"ta_IN": {
"childViews": [
@ -1385,6 +1320,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -26,7 +26,7 @@ exports.level = {
"ja": "一つのコミットのみを取得",
"zh_CN": "只取一个提交记录",
"zh_TW": "只取一個 commit",
"ro":"Alegem doar un singur commit",
"ro": "Alegem doar un singur commit",
"ru_RU": "Выберем один коммит.",
"uk": "Вибираємо всього один коміт",
"vi": "Chỉ lấy 1 commit",
@ -369,7 +369,6 @@ exports.level = {
}
]
},
// INTL out of sync :(
"ja": {
"childViews": [
{
@ -763,43 +762,43 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## Commit impilati localmente",
"",
"Ecco una situazione che accade spesso in fase di sviluppo: Sto cercando di scovare un bug. Per aiutarmi nel mio lavoro di detective, inserisco alcuni comandi per il debug e alcune print per fare stampe.",
"",
"Questi comandi aggiunti per il debug vengono salvati con un commit loro dedicato. Finalmente riesco a beccare il bug, sistemo il tutto, e brindo!",
"",
"Ora l'unico problema è che devo salvare il lavoro di `bugFix` nel ramo `main`. Se eseguo un semplice fast-forwarded `main`, allora il `main` andrebbe a prendere anche tutto ciò che è stato aggiunto per il debug. Se solo ci fosse un altro modo...",
],
},
"Ora l'unico problema è che devo salvare il lavoro di `bugFix` nel ramo `main`. Se eseguo un semplice fast-forwarded `main`, allora il `main` andrebbe a prendere anche tutto ciò che è stato aggiunto per il debug. Se solo ci fosse un altro modo..."
]
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"Dobbiamo dire a Git di fare la copia di un solo commit. Questo assomiglia a quanto visto in precedenza -- possiamo riusare gli stessi comandi:",
"",
"* `git rebase -i`",
"* `git cherry-pick`",
"",
"Per raggiungere l'obiettivo.",
],
},
"Per raggiungere l'obiettivo."
]
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"Questo è un livello più avanzato, lascerò a te la libertà di decidere quale comando usare, ma per concludere il livello, assicurati che `main` riceva il commit puntato da `bugFix`.",
],
},
},
],
"type": "ModalAlert",
"options": {
"markdowns": [
"Questo è un livello più avanzato, lascerò a te la libertà di decidere quale comando usare, ma per concludere il livello, assicurati che `main` riceva il commit puntato da `bugFix`."
]
}
}
]
},
"ta_IN": {
"childViews": [
@ -878,6 +877,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -130,7 +130,7 @@ exports.level = {
"Ceci étant dit, je peux comparer le résultat avec la structure et les différentes apostrophes. Tant que votre arbre `main` a la même structure et les différentes apostrophes le niveau sera considéré comme réussi."
]
}
},
}
]
},
"es_AR": {
@ -165,7 +165,7 @@ exports.level = {
"Habiendo dicho eso, puedo comparar los niveles basándome ahora en la estructura y las diferencias relativas de apóstrofes. Mientras que tu rama `main` tenga la misma estructura y diferencias relativas de apóstrofes, te voy a dar el puntaje completo."
]
}
},
}
]
},
"es_ES": {
@ -200,7 +200,7 @@ exports.level = {
"Habiendo dicho eso, puedo comparar los niveles basándome ahora en la estructura y las diferencias relativas de apóstrofes. Mientras que tu rama `main` tenga la misma estructura y diferencias relativas de apóstrofes, te voy a dar el puntaje completo."
]
}
},
}
]
},
"es_MX": {
@ -235,7 +235,7 @@ exports.level = {
"Habiendo dicho eso, puedo comparar los niveles basándome ahora en la estructura y las diferencias relativas de apóstrofes. Mientras que tu rama `main` tenga la misma estructura y diferencias relativas de apóstrofes te voy a dar el puntaje completo."
]
}
},
}
]
},
"pt_BR": {
@ -270,7 +270,7 @@ exports.level = {
"Tendo dito isto, posso avaliar a resposta baseado na estrutura e nas diferenças relativas de número de apóstrofos. Desde que o ramo `main` da sua árvore tenha a mesma estrutura, e o número de apóstrofos seja igual a menos de uma constante, darei a você todos os pontos para esta tarefa."
]
}
},
}
]
},
"gl": {
@ -305,7 +305,7 @@ exports.level = {
"Contado todo esto, a resposta valídase baseándose na estructura e nos diferentes apóstrofes. Cando a rama `main` teña a mesma estructura, e o número de apóstrofos sexa igual, obterás todos os puntos da tarefa."
]
}
},
}
]
},
"de_DE": {
@ -340,7 +340,7 @@ exports.level = {
"Zu guter Letzt noch eine Bemerkung: Ich kann Level nur auf Struktur und Apostroph-Differenz prüfen. So lange wie dein `main` am Ende dieselbe Struktur und Apostroph-Differenz aufweist wie der Ziel-`main`, ist der Level bestanden."
]
}
},
}
]
},
"ja": {
@ -373,7 +373,7 @@ exports.level = {
"最後に、ゴール時点での状態に気を付けてください。今回2回ほどコミットを動かしますから、コミットへのポインタにはアポストロフィ'が追加されます。commit --amendコマンドの実行でできたコミットには更にもう1つのアポストロフィが追加されます。 "
]
}
},
}
]
},
"zh_CN": {
@ -440,7 +440,7 @@ exports.level = {
"啊!最後還要提醒你一下最後所產生的 commit tree因為我們把 commit 移動了兩次,所以會分別產生一個 apostrophe(單引號) commit。還有一個 apostrophe commit 是因為我們修改 commit 而加進來的。"
]
}
},
}
]
},
"ko": {
@ -473,7 +473,7 @@ exports.level = {
"최종적으로, 목표 결과를 눈여겨 보세요 -- 우리가 커밋을 두 번 옮겼기 때문에, 두 커밋 모두 따옴표 표시가 붙어있습니다. 정정한(amend) 커밋은 따옴표가 추가로 하나 더 붙어있습니다."
]
}
},
}
]
},
"ro": {
@ -542,7 +542,7 @@ exports.level = {
"Важно, чтобы совпадало не только дерево коммитов, но и количество апострофов."
]
}
},
}
]
},
"uk": {
@ -682,23 +682,23 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## Giocoliere di commit",
"",
"Ecco una situazione che capita spesso. Hai dei cambiamenti (`newImage`) e un altro insieme di modifiche (`caption`) che sono collegate tra loro, quindi sono posizionate una dopo l'altra nel repository.",
"",
"La cosa complicata è che a volte hai bisogno di fare una piccola modifica a un commit precedente. In questo caso, dobbiamo apporre una modifica a `newImage`, anche se questo commit non risulta essere l'ultimo!!",
],
},
"La cosa complicata è che a volte hai bisogno di fare una piccola modifica a un commit precedente. In questo caso, dobbiamo apporre una modifica a `newImage`, anche se questo commit non risulta essere l'ultimo!!"
]
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"Supereremo queste difficoltà facendo i seguenti passaggi:",
"",
"* Riordineremo i commit in modo che quello che vogliamo modificare risulti l'ultimo con `git rebase -i`",
@ -709,11 +709,11 @@ exports.level = {
"Ci sono vari modi per raggiungere l'obiettivo finale (vedo che strizzi l'occhio verso cherry-pick), e ne vedremo altri più tardi, ma per ora concentriamoci su questa tecnica.",
"In fine, presta attenzione all'obiettivo -- visto che spostiamo i commit due volte, a entrambi viene messo un apostrofo. Un ulteriore apostrofo è aggiunto per il commit --amend, che completa in fine l'albero.",
"",
"Detto questo, posso confrontare i livelli in base alla struttura e i relativi apostrofi. Finchè il tuo ramo `main` avrà la stessa struttura con i giusti apostrofi, ti darò pieni voti.",
],
},
},
],
"Detto questo, posso confrontare i livelli in base alla struttura e i relativi apostrofi. Finchè il tuo ramo `main` avrà la stessa struttura con i giusti apostrofi, ti darò pieni voti."
]
}
}
]
},
"ta_IN": {
"childViews": [
@ -782,6 +782,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -46,21 +46,21 @@ exports.level = {
"es_ES": "¡No te olvides de avanzar main a los cambios actualizados!",
"es_MX": "¡No te olvides de avanzar main a los cambios actualizados!",
"pt_BR": "Não se esqueça de avançar a referência do main para as mudanças efetuadas!",
"gl": "¡Non te esquezas de avanzar main ós cambios actualizados!",
"gl": "¡Non te esquezas de avanzar main ós cambios actualizados!",
"de_DE": "Vergiss nicht den main auf die aktuelle Version vorzuspulen",
"ja": "mainのポインタを先に進めることを忘れずに",
"ko": "main을 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!",
"ja": "mainのポインタを先に進めることを忘れずに",
"ko": "main을 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!",
"zh_CN": "别忘记了将 main 快进到最新的更新上!",
"zh_TW": "別忘記了將 main 推到最新的 commit 上面!",
"ro": "Nu uita să avansezi main la ultimele modificări!",
"ro": "Nu uita să avansezi main la ultimele modificări!",
"ru_RU": "Не забудь переместить main на последние изменения.",
"uk": "Не забудь перемістити main на останні зміни!",
"vi": "Đừng quên đẩy nhánh main lên cập nhật mới nhất!",
"uk": "Не забудь перемістити main на останні зміни!",
"vi": "Đừng quên đẩy nhánh main lên cập nhật mới nhất!",
"sl_SI": "Ne pozabi prestaviti main naprej na posodobljene spremembe.",
"it_IT": "Non dimenticare di avanzare il main verso le ultime modifiche aggiornate!",
"pl": "Nie zapomnij sforwardować maina do najnowszych zmian!",
"pl": "Nie zapomnij sforwardować maina do najnowszych zmian!",
"ta_IN": "Main ஐ புதுப்பிக்கப்பட்ட மாற்றங்களுக்கு முன்னேற்றமிடுவதை மறக்க வேண்டாம்!",
"tr_TR": "Main'i yaptığınız değişikliklere ilerletmeyi unutmayın!",
"tr_TR": "Main'i yaptığınız değişikliklere ilerletmeyi unutmayın!"
},
"startDialog": {
"en_US": {
@ -843,9 +843,9 @@ exports.level = {
"",
"Come hai visto nell'ultimo livello, abbiamo usato `rebase -i` per riordinare i commit. Una volta che il commit che volevamo modificare era in cima, abbiamo potuto facilmente fare --amend per poi ritornare nell'ordine di partenza.",
"",
"L'unico problema qui è che ci sono tanti riordini da fare, che può portare a conflitti nel rebase. Vediamo di farlo attraverso il metodo `git cherry-pick`.",
],
},
"L'unico problema qui è che ci sono tanti riordini da fare, che può portare a conflitti nel rebase. Vediamo di farlo attraverso il metodo `git cherry-pick`."
]
}
},
{
"type": "GitDemonstrationView",
@ -853,13 +853,14 @@ exports.level = {
"beforeMarkdowns": [
"Ricorda che git cherry-pick creerà un qualsiasi commit del repository su HEAD (a condizione che il commit non sia un antenato di HEAD).",
"",
"Qui un breve demo per rinfrescare la memoria:",
"Qui un breve demo per rinfrescare la memoria:"
],
"afterMarkdowns": [
"Grande! Andiamo avanti."
],
"afterMarkdowns": ["Grande! Andiamo avanti."],
"command": "git cherry-pick C2",
"beforeCommand":
"git checkout -b bugFix; git commit; git checkout main; git commit",
},
"beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit"
}
},
{
"type": "ModalAlert",
@ -867,11 +868,11 @@ exports.level = {
"markdowns": [
"In questo livello, dobbiamo fare amend di `C2` una volta, evitando di usare `rebase -i`. Lascerò a te il compito di scoprire come farlo! :D",
"",
"Ricorda, il numero esatto di apostrofi sul commit non sono importanti, solo le differenze tra essi. Per esempio, considererò l'albero che corrisponde a quello della soluzione ma che ha un apostrofo extra dappertutto.",
],
},
},
],
"Ricorda, il numero esatto di apostrofi sul commit non sono importanti, solo le differenze tra essi. Per esempio, considererò l'albero che corrisponde a quello della soluzione ma che ha un apostrofo extra dappertutto."
]
}
}
]
},
"ta_IN": {
"childViews": [
@ -958,6 +959,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -5,23 +5,23 @@ exports.level = {
"name": {
"en_US": "Git Tags",
"de_DE": "Git Tags",
"ja": "Gitのタグ",
"ja": "Gitのタグ",
"es_AR": "Tags en git",
"es_ES": "Tags en git",
"es_MX": "Tags de Git",
"pt_BR": "Tags no Git",
"gl": "Etiquetas en git",
"gl": "Etiquetas en git",
"fr_FR": "Git Tags",
"zh_CN": "Git Tag",
"zh_TW": "git tag",
"ro": "Tag-uri Git",
"ru_RU": "git tag",
"ko": "Git 태그",
"uk": "Git Tags",
"vi": "Tag trong Git",
"ko": "Git 태그",
"uk": "Git Tags",
"vi": "Tag trong Git",
"sl_SI": "Git Tagi",
"it_IT": "Git Tag",
"pl": "Tagi Gita",
"pl": "Tagi Gita",
"ta_IN": "Git டேக்கள்",
"tr_TR": "Git Tagleri"
},
@ -46,7 +46,7 @@ exports.level = {
"it_IT": "Puoi fare direttamente checkout del commit o semplicemente del tag!",
"pl": "Możesz checkoutować commit bezpośrednio lub po prostu tag!",
"ta_IN": "நீங்கள் நேரடியாக commit ஐ அல்லது tag ஐ checkout செய்யலாம்!",
"tr_TR": "İsterseniz direkt commit'e veya direkt tag'e checkout yapabilirsiniz!",
"tr_TR": "İsterseniz direkt commit'e veya direkt tag'e checkout yapabilirsiniz!"
},
"startDialog": {
"en_US": {
@ -996,34 +996,34 @@ exports.level = {
"Come hai già imparato nelle lezioni precedenti, i rami sono facili da spostare e puntano a commit differenti man mano che il lavoro avanza. I rami subiscono modifiche, spesso temporaneamente, ma sono sempre in continua evoluzione.",
"",
"Ti starai chedendo se esiste un modo *definitivo* per segnare un particolare commit del repository. Nel caso di release importanti e grandi merge (fusioni), esiste un modo per segnare questi commit con qualcosa di più permanente dei rami?",
"",
],
},
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
'Ci puoi scommettere! Git tag serve proprio a questo -- i tag contrassegnano in modo permanente dei commit "importanti" a cui puoi far riferimento come avviene con i rami.',
"Ci puoi scommettere! Git tag serve proprio a questo -- i tag contrassegnano in modo permanente dei commit \"importanti\" a cui puoi far riferimento come avviene con i rami.",
"",
'Ancora più importante il fatto che non si spostano anche se vengono eseguiti nuovi commit. Non puoi selezionare un tag e aggiungere del lavoro su quel tag -- i tag esistono come ancore nell\'albero dei commit, e si riferiscono a determinati punti.',
"Ancora più importante il fatto che non si spostano anche se vengono eseguiti nuovi commit. Non puoi selezionare un tag e aggiungere del lavoro su quel tag -- i tag esistono come ancore nell'albero dei commit, e si riferiscono a determinati punti.",
"",
"Vediamo in pratica a cosa servono i tag.",
],
},
"Vediamo in pratica a cosa servono i tag."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Creiamo un tag in `C1` che è la nostra versione 1 del prototipo.",
"Creiamo un tag in `C1` che è la nostra versione 1 del prototipo."
],
"afterMarkdowns": [
"Ecco! Abbastanza facile. Abbiamo creato il tag `v1` che si riferisce al solo commit `C1`. Se non specifichi il commit, git creera il tag sul commit puntato da `HEAD`.",
"Ecco! Abbastanza facile. Abbiamo creato il tag `v1` che si riferisce al solo commit `C1`. Se non specifichi il commit, git creera il tag sul commit puntato da `HEAD`."
],
"command": "git tag v1 C1",
"beforeCommand": "git commit",
},
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
@ -1031,11 +1031,11 @@ exports.level = {
"markdowns": [
"In questo livello riproduci gli stessi tag mostrati nell'obiettivo, e alla fine seleziona il tag `v1`. Presta attenzione a come vai nello stato di detached `HEAD` -- questo perché non puoi creare commit direttamente dal tag `v1.",
"",
"Nel livello successivo vedremo un utilizzo più interessante dell'uso dei tag.",
],
},
},
],
"Nel livello successivo vedremo un utilizzo più interessante dell'uso dei tag."
]
}
}
]
},
"ta_IN": {
"childViews": [
@ -1138,6 +1138,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -18,7 +18,7 @@ exports.level = {
"gl": "Introuducción a cherry-pick",
"zh_CN": "Git Cherry-pick",
"zh_TW": "介紹 cherry-pick",
"ro":"Introducere în cherry-pick",
"ro": "Introducere în cherry-pick",
"ru_RU": "Введение в Cherry-pick",
"ko": "Cherry-pick 소개",
"uk": "Знайомство з cherry-pick",
@ -1079,20 +1079,20 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## Spostare il lavoro in giro",
"",
"Finora abbiamo intravisto le basi di git -- creazione di commit, rami, e come spostarsi sull'albero dei commit. Questi concetti sono sufficienti per sfruttare il 90% della potenza di git, e soddisfano gli utilizzi standard degli sviluppatori.",
"",
'Il restante 10%, può rivelarsi utile in situazioni più complesse (o se ti sei messo nei guai). Il prossimo concetto che affronteremo è lo "spostare il lavoro in giro" -- in altre parole, è un modo per gli sviluppatori di dire "Voglio questo lavoro qua e quel lavoro là" in maniera chiara e precisa.',
"Il restante 10%, può rivelarsi utile in situazioni più complesse (o se ti sei messo nei guai). Il prossimo concetto che affronteremo è lo \"spostare il lavoro in giro\" -- in altre parole, è un modo per gli sviluppatori di dire \"Voglio questo lavoro qua e quel lavoro là\" in maniera chiara e precisa.",
"",
"Sembra un grosso lavoro, ma è un concetto semplice.",
],
},
"Sembra un grosso lavoro, ma è un concetto semplice."
]
}
},
{
"type": "ModalAlert",
@ -1107,35 +1107,34 @@ exports.level = {
"È un modo chiaro e diretto di dire che vuoi la copia di una serie di commit da applicare sulla posizione in cui ti trovi attualmente (`HEAD`). Io personalmente adoro `cherry-pick` perché semplice e facile da capire.",
"",
"Vediamo una demo!",
"",
],
},
""
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"In questo repository abbiamo del lavoro nel ramo `side` che vogliamo copiare nel `main`. Questo può essere eseguito tramite rebase (che abbiamo già imparato), ma vediamo il cherry-pick all'opera.",
"In questo repository abbiamo del lavoro nel ramo `side` che vogliamo copiare nel `main`. Questo può essere eseguito tramite rebase (che abbiamo già imparato), ma vediamo il cherry-pick all'opera."
],
"afterMarkdowns": [
"Ecco qua! Volevamo i commit `C2` e `C4` e git li ha copiati sotto di noi. Semplicissimo!",
"Ecco qua! Volevamo i commit `C2` e `C4` e git li ha copiati sotto di noi. Semplicissimo!"
],
"command": "git cherry-pick C2 C4",
"beforeCommand":
"git checkout -b side; git commit; git commit; git commit; git checkout main; git commit;",
},
"beforeCommand": "git checkout -b side; git commit; git commit; git commit; git checkout main; git commit;"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Per completare questo livello, copia il lavoro dai tre rami sul main. Puoi vedere quali sono i commit richiesti guardando l'obiettivo.",
"",
],
},
},
],
},
""
]
}
}
]
}
},
"ta_IN": {
"childViews": [
@ -1193,60 +1192,60 @@ exports.level = {
]
},
"tr_TR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Çalışmayı Taşımak",
"",
"Şimdiye kadar git'in temellerini inceledik — commit yapma, branch oluşturma ve kaynak ağacında (source tree) gezinme. Bu temel kavramlar, git repolarının gücünün %90'ını kullanmak ve geliştiricilerin ana ihtiyaçlarını karşılamak için yeterlidir.",
"",
"Ancak geriye kalan %10, karmaşık iş akışlarında (veya zor bir duruma düştüğünüzde) oldukça faydalı olabilir. Şimdi ele alacağımız kavram \"çalışmayı taşımak\" — bir başka deyişle, geliştiricilerin değişikliklerini \"Bu çalışmayı burada, şunu ise orada istiyorum\" şeklinde kesin, etkili ve esnek bir şekilde ifade etmelerinin bir yoludur.",
"",
"Bu, başlangıçta karmaşık görünebilir, ancak aslında basit bir kavramdır."
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Cherry-pick",
"",
"Bu serideki ilk komut `git cherry-pick` olarak adlandırılır. Aşağıdaki şekilde kullanılır:",
"",
"* `git cherry-pick <Commit1> <Commit2> <...>`",
"",
"Bu, şu anki konumunuzun (`HEAD`) altına bir dizi commit kopyalamak istediğinizi belirten çok basit bir komuttur. Kişisel olarak `cherry-pick` komutunu çok severim çünkü içinde çok fazla gizem yoktur ve anlaşılması kolaydır.",
"",
"Hadi bir demo yapalım!",
""
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"İşte `side` branch'inde bazı çalışmaların bulunduğu ve bunları `main` branch'ine kopyalamak istediğimiz bir repo. Bu işlem bir rebase ile yapılabilir (bunu zaten öğrendik), ancak `cherry-pick` komutunun nasıl çalıştığını görelim."
],
"afterMarkdowns": [
"Ve işte bu kadar! `C2` ve `C4` commit'lerini istedik, ve git, bunları tam istediğimiz yere yerleştirdi. Bu kadar basit!"
],
"command": "git cherry-pick C2 C4",
"beforeCommand": "git checkout -b side; git commit; git commit; git commit; git checkout main; git commit;"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Bu seviyeyi tamamlamak için, gösterilen üç branch'ten bazı çalışmaları main branch'ine kopyalayın. Hangi commit'leri istediğimizi, hedef görsellemesini inceleyerek görebilirsiniz.",
""
]
}
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Çalışmayı Taşımak",
"",
"Şimdiye kadar git'in temellerini inceledik — commit yapma, branch oluşturma ve kaynak ağacında (source tree) gezinme. Bu temel kavramlar, git repolarının gücünün %90'ını kullanmak ve geliştiricilerin ana ihtiyaçlarını karşılamak için yeterlidir.",
"",
"Ancak geriye kalan %10, karmaşık iş akışlarında (veya zor bir duruma düştüğünüzde) oldukça faydalı olabilir. Şimdi ele alacağımız kavram \"çalışmayı taşımak\" — bir başka deyişle, geliştiricilerin değişikliklerini \"Bu çalışmayı burada, şunu ise orada istiyorum\" şeklinde kesin, etkili ve esnek bir şekilde ifade etmelerinin bir yoludur.",
"",
"Bu, başlangıçta karmaşık görünebilir, ancak aslında basit bir kavramdır."
]
}
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Cherry-pick",
"",
"Bu serideki ilk komut `git cherry-pick` olarak adlandırılır. Aşağıdaki şekilde kullanılır:",
"",
"* `git cherry-pick <Commit1> <Commit2> <...>`",
"",
"Bu, şu anki konumunuzun (`HEAD`) altına bir dizi commit kopyalamak istediğinizi belirten çok basit bir komuttur. Kişisel olarak `cherry-pick` komutunu çok severim çünkü içinde çok fazla gizem yoktur ve anlaşılması kolaydır.",
"",
"Hadi bir demo yapalım!",
""
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"İşte `side` branch'inde bazı çalışmaların bulunduğu ve bunları `main` branch'ine kopyalamak istediğimiz bir repo. Bu işlem bir rebase ile yapılabilir (bunu zaten öğrendik), ancak `cherry-pick` komutunun nasıl çalıştığını görelim."
],
"afterMarkdowns": [
"Ve işte bu kadar! `C2` ve `C4` commit'lerini istedik, ve git, bunları tam istediğimiz yere yerleştirdi. Bu kadar basit!"
],
"command": "git cherry-pick C2 C4",
"beforeCommand": "git checkout -b side; git commit; git commit; git commit; git checkout main; git commit;"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Bu seviyeyi tamamlamak için, gösterilen üç branch'ten bazı çalışmaları main branch'ine kopyalayın. Hangi commit'leri istediğimizi, hedef görsellemesini inceleyerek görebilirsiniz.",
""
]
}
}
]
}
};

View file

@ -14,11 +14,11 @@ exports.level = {
"zh_TW": "分離 HEAD",
"de_DE": "Den Kopf abtrennen",
"ja": "HEADの分離",
"ro":"Detașează-ți capul",
"ro": "Detașează-ți capul",
"ru_RU": "Теряем голову, или detached HEAD",
"ko": "HEAD 분리하기",
"uk": "Втрачаємо голову чи detached HEAD",
'vi': "Tháo đầu cái nào",
"vi": "Tháo đầu cái nào",
"sl_SI": "Ločevanje tvoje glave - HEAD-a",
"it_IT": "Perdere la testa (HEAD)",
"pl": "Odczep sobie HEAD",
@ -1067,7 +1067,7 @@ exports.level = {
"markdowns": [
"## Git에서 여기저기로 옮겨다니기",
"",
"Git의 고급기능들에 대해 더 알아보기 전에, 여러분의 프로젝트를 표현하는 커밋 트리\(commit tree\)에서 이동 할 수 있는 여러가지 방법들을 아는것이 중요합니다.",
"Git의 고급기능들에 대해 더 알아보기 전에, 여러분의 프로젝트를 표현하는 커밋 트리(commit tree)에서 이동 할 수 있는 여러가지 방법들을 아는것이 중요합니다.",
"",
"여기저기 이동하는 것에 익숙해지면, 여러분이 다른 git 명령어들을 사용하는 능력도 아주 좋아질 것입니다!",
"",
@ -1450,11 +1450,11 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## Spostarsi in Git",
"",
"Prima di imparare comandi avanzati in Git, è fondamentale conoscere i diversi modi per spostarsi nell'albero dei commit che costituiscono il tuo progetto.",
@ -1464,65 +1464,68 @@ exports.level = {
"",
"",
"",
"",
],
},
""
]
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"## HEAD",
"",
"Prima di tutto dobbiamo parlare di \"HEAD\". HEAD (testa) è il nome simbolico dato al commit selezionato -- in pratica è il commit su cui stai lavorando.",
"",
"HEAD punta sempre al commit più recente. La maggior parte dei comandi git che apportano modifiche all'albero dei commit, vanno a cambiare per primo HEAD.",
"",
"Di norma HEAD punta al nome di un ramo (per esempio bugFix). Quando esegui un commit, lo stato di bugFix viene modificato, e questo cambiamento è visibile attraverso HEAD.",
],
},
"Di norma HEAD punta al nome di un ramo (per esempio bugFix). Quando esegui un commit, lo stato di bugFix viene modificato, e questo cambiamento è visibile attraverso HEAD."
]
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"Vediamolo in azione. Qui mostreremo HEAD prima e dopo un commit.",
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Vediamolo in azione. Qui mostreremo HEAD prima e dopo un commit."
],
afterMarkdowns: [
"Visto! HEAD era nascosto sotto il ramo `main`.",
"afterMarkdowns": [
"Visto! HEAD era nascosto sotto il ramo `main`."
],
command:
"git checkout C1; git checkout main; git commit; git checkout C2",
beforeCommand: "",
},
"command": "git checkout C1; git checkout main; git commit; git checkout C2",
"beforeCommand": ""
}
},
{
type: "GitDemonstrationView",
options: {
beforeMarkdowns: [
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"### Detaching HEAD (testa distaccata)",
"",
"Detaching HEAD significa attaccare la testa a un commit invece che a un ramo. All'inizio la situazione è questa:",
"",
"HEAD -> main -> C1",
"",
""
],
afterMarkdowns: ["E ora è", "", "HEAD -> C1"],
command: "git checkout C1",
beforeCommand: "",
},
"afterMarkdowns": [
"E ora è",
"",
"HEAD -> C1"
],
"command": "git checkout C1",
"beforeCommand": ""
}
},
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"Per completare questo livello, stacchiamo HEAD da `bugFix` e attacchiamolo a un commit.",
"",
"Per specificare un commit si usa l'hash. L'hash per ogni commit è presente sul cerchio che rappresenta il commit.",
],
},
},
],
"Per specificare un commit si usa l'hash. L'hash per ogni commit è presente sul cerchio che rappresenta il commit."
]
}
}
]
},
"tr_TR": {
"childViews": [

View file

@ -17,7 +17,7 @@ exports.level = {
"fr_FR": "Vous pouvez utiliser soit les branches, soit les références relatives (HEAD~) pour spécifier la cible à rebaser",
"zh_CN": "branch 或者是相对位置HEAD~)都可以用來指定 rebase 的目标",
"zh_TW": "你可以指定 branch 或者是相對位置HEAD~)來表示 rebase 的目標",
"ro":"Poți folosi fie ramuri, fie referințe relative (HEAD~) pentru a specifica ținta rebase-ului",
"ro": "Poți folosi fie ramuri, fie referințe relative (HEAD~) pentru a specifica ținta rebase-ului",
"ru_RU": "Можно использовать либо ветки, либо относительные ссылки (HEAD~), чтобы указать цель для Rebase",
"ja": "リベースする対象の指定には、ブランチ名や相対リファレンス(HEAD~)が使えます",
"ko": "리베이스할 타겟으로 브랜치나 상대 참조(HEAD~)를 사용할 수 있습니다",
@ -88,11 +88,9 @@ exports.level = {
"When the interactive rebase dialog opens, you have the ability to do two things in our educational application:",
"",
"* You can reorder commits simply by changing their order in the UI (via dragging and dropping with the mouse).",
"* You can choose to keep all commits or drop specific ones. When the dialog opens, each commit is set to be included by the `pick` " +
"button next to it being active. To drop a commit, toggle off its `pick` button.",
"* You can choose to keep all commits or drop specific ones. When the dialog opens, each commit is set to be included by the `pick` button next to it being active. To drop a commit, toggle off its `pick` button.",
"",
"*It is worth mentioning that in the real git interactive rebase you can do many more things like squashing (combining) commits, " +
"amending commit messages, and even editing the commits themselves. For our purposes though we will focus on these two operations above.*",
"*It is worth mentioning that in the real git interactive rebase you can do many more things like squashing (combining) commits, amending commit messages, and even editing the commits themselves. For our purposes though we will focus on these two operations above.*",
"",
"Great! Let's see an example."
]
@ -1070,8 +1068,7 @@ exports.level = {
"* Bạn có thể sắp xếp lại commit một cách đơn giản thông qua UI (bằng cách kéo thả trên công cụ của chúng tôi).",
"* Bạn có thể chọn hoặc loại bỏ một vài commit cụ thể. Điều này được thể hiện qua nút `pick` -- tắt nút `pick` nghĩa là bạn loại bỏ commit đó.",
"",
"*Chú ý rằng, đối với rebase tương tác trong thực tế, bạn có thể làm nhiều thứ hơn như squash (kết hợp) commit, " +
"sửa đổi commit message, thậm chí là chỉnh sửa commit. Tuy nhiên, chúng ta chỉ cần tập trung vào hai thao tác trên.*",
"*Chú ý rằng, đối với rebase tương tác trong thực tế, bạn có thể làm nhiều thứ hơn như squash (kết hợp) commit, sửa đổi commit message, thậm chí là chỉnh sửa commit. Tuy nhiên, chúng ta chỉ cần tập trung vào hai thao tác trên.*",
"",
"Tuyệt! Cùng xem qua một ví dụ nào."
]
@ -1243,9 +1240,9 @@ exports.level = {
"",
"Ma cosa accade se non sai quale commit ti serve? Per fortuna git ci viene in contro anche in questo caso! Possiamo usare il rebase interattivo -- è il miglior modo per rivedere la sequenza di commit di cui stai per fare il rebase.",
"",
"Vediamolo nel dettaglio...",
],
},
"Vediamolo nel dettaglio..."
]
}
},
{
"type": "ModalAlert",
@ -1255,9 +1252,9 @@ exports.level = {
"",
"Se aggiungi quest'opzione, git aprirà un'interfaccia per mostrarti quali commit stanno per essere copiati sotto il commit su cui vuoi fare il rebase. Verrà anche mostrato l'hash e il messaggio del commit, il che è grandioso per darci l'idea di cosa è cosa",
"",
'Nel git "vero", l\'interfaccia che si apre in realtà è un editor di testo come `vim`. Nel nostro caso, ho creato una piccola finestra che si comporta allo stesso modo.',
],
},
"Nel git \"vero\", l'interfaccia che si apre in realtà è un editor di testo come `vim`. Nel nostro caso, ho creato una piccola finestra che si comporta allo stesso modo."
]
}
},
{
"type": "ModalAlert",
@ -1266,38 +1263,36 @@ exports.level = {
"Quando la finestra si apre, hai la possibilità di fare due cose:",
"",
"* Puoi riordinare i commit modificandone l'ordine (drag & drop con il mouse).",
"* Puoi decidere se conservare tutti i commit o rimuoverne qualcuno. Quando la finestra si apre, ogni commit è considerato preso dal pulsante `pick` " +
"attivo affianco a esso. Per scartare un commit, disattiva il suo pulsante `pick`.",
"* Puoi decidere se conservare tutti i commit o rimuoverne qualcuno. Quando la finestra si apre, ogni commit è considerato preso dal pulsante `pick` attivo affianco a esso. Per scartare un commit, disattiva il suo pulsante `pick`.",
"",
"*Vale la pena ricordare che nel vero rebase interattivo puoi fare molte più cose come lo squashing (combinazione) di commit, " +
"la modifica del messaggio di commit (amending), e perfino la modifica dello stesso commit. Noi ci concentreremo sulle due funzioni descritte sopra.*",
"*Vale la pena ricordare che nel vero rebase interattivo puoi fare molte più cose come lo squashing (combinazione) di commit, la modifica del messaggio di commit (amending), e perfino la modifica dello stesso commit. Noi ci concentreremo sulle due funzioni descritte sopra.*",
"",
"Bene! Vediamo un esempio.",
],
},
"Bene! Vediamo un esempio."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Quando premi il pulsante, apparirà la finestra del rebase interattivo. Riordina qualche commit (o sentiti libero di scartarne qualcuno) e vediamo il risultato!",
"Quando premi il pulsante, apparirà la finestra del rebase interattivo. Riordina qualche commit (o sentiti libero di scartarne qualcuno) e vediamo il risultato!"
],
"afterMarkdowns": [
"Boom! Git ha fatto la copia nell'ordine esatto che hai specificato nell'interfaccia grafica.",
"Boom! Git ha fatto la copia nell'ordine esatto che hai specificato nell'interfaccia grafica."
],
"command": "git rebase -i HEAD~4 --aboveAll",
"beforeCommand": "git commit; git commit; git commit; git commit",
},
"beforeCommand": "git commit; git commit; git commit; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Per concludere questo livello, esegui un rebase interattivo e raggiungi l'obiettivo mostrato. Ricordati che puoi sempre fare `undo` o `reset` per correggere gli errori :D",
],
},
},
],
"Per concludere questo livello, esegui un rebase interattivo e raggiungi l'obiettivo mostrato. Ricordati che puoi sempre fare `undo` o `reset` per correggere gli errori :D"
]
}
}
]
},
"tr_TR": {
"childViews": [

View file

@ -14,7 +14,7 @@ exports.level = {
"pt_BR": "Referências relativas (^)",
"gl": "Referencias relativas (^)",
"de_DE": "Relative Referenzen (^)",
"ro":"Referințe relative (^)",
"ro": "Referințe relative (^)",
"ru_RU": "Относительные ссылки (^)",
"ko": "상대 참조 (^) (Relative Refs)",
"uk": "Відносні посилання",
@ -1411,9 +1411,9 @@ exports.level = {
"",
"Inoltre, gli hash sono solitamente molto più lunghi. Per esempio, l'hash del commit nel livello precedente è `fed2da64c0efc5293610bdd892f82a58e8cbc5d8`. Non così semplice da ricordare...",
"",
"La nota positiva è che Git è furbo con gli hash. Richiede un numero di caratteri dell'hash tali da poter identificare in modo univoco il commit. Posso scrivere `fed2` invece dell'hash completo.",
],
},
"La nota positiva è che Git è furbo con gli hash. Richiede un numero di caratteri dell'hash tali da poter identificare in modo univoco il commit. Posso scrivere `fed2` invece dell'hash completo."
]
}
},
{
"type": "ModalAlert",
@ -1426,9 +1426,9 @@ exports.level = {
"Questi riferimenti sono strumenti potenti, introduciamo i più semplici:",
"",
"* Risalire di un commit alla volta con `^`",
"* Risalire di tot commit alla volta con `~<num>`",
],
},
"* Risalire di tot commit alla volta con `~<num>`"
]
}
},
{
"type": "GitDemonstrationView",
@ -1436,32 +1436,31 @@ exports.level = {
"beforeMarkdowns": [
"Diamo un occhiata all'operatore (^) chiamato Caret o accento circonflesso. Ogni volta che lo aggiungi a un riferimento, stai dicendo a Git di cercare il genitore del commit specificato.",
"",
'Quindi, dire `main^` è equivalente a dire "il primo genitore di `main`".',
"Quindi, dire `main^` è equivalente a dire \"il primo genitore di `main`\".",
"",
"`main^^` è il nonno (antenato di seconda generazione) di `main`",
"",
"Selezioniamo il commit sopra main.",
"Selezioniamo il commit sopra main."
],
"afterMarkdowns": [
"Colpito! Fatto. Mille volte meglio che scrivere l'hash.",
"Colpito! Fatto. Mille volte meglio che scrivere l'hash."
],
"command": "git checkout main^",
"beforeCommand": "git commit",
},
"beforeCommand": "git commit"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Puoi considerare `HEAD` come un riferimento relativo. Usiamolo un paio di volte per risalire l'albero dei commit.",
"Puoi considerare `HEAD` come un riferimento relativo. Usiamolo un paio di volte per risalire l'albero dei commit."
],
"afterMarkdowns": [
"Facile! Possiamo viaggiare in dietro nel tempo con `HEAD^`",
"Facile! Possiamo viaggiare in dietro nel tempo con `HEAD^`"
],
"command":
"git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^",
"beforeCommand": "git commit; git commit",
},
"command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^",
"beforeCommand": "git commit; git commit"
}
},
{
"type": "ModalAlert",
@ -1469,11 +1468,11 @@ exports.level = {
"markdowns": [
"Per completare questo livello, seleziona il commit padre di `bugFix`. Questo provocherà una detached `HEAD`.",
"",
"Puoi usare l'hash se vuoi, ma prova a usare i riferimenti relativi!",
],
},
},
],
"Puoi usare l'hash se vuoi, ma prova a usare i riferimenti relativi!"
]
}
}
]
},
"tr_TR": {
"childViews": [

View file

@ -14,13 +14,13 @@ exports.level = {
"gl": "Precisarás usar polo menos unha referencia directa (hash) para completar este nivel",
"de_DE": "Du musst mindestens einen Hash benutzen, um dieses Level zu schaffen",
"ja": "このレベルをクリアするには少なくとも一つの直接リファレンスhashを使用する必要があります",
"ro":"Vei avea nevoie să folosești cel puțin o referință directă (hash) pentru a termina acest nivel",
"ro": "Vei avea nevoie să folosești cel puțin o referință directă (hash) pentru a termina acest nivel",
"ru_RU": "Понадобится использовать как минимум одну прямую ссылку (хеш), чтобы пройти этот уровень",
"ko": "이번 레벨을 완료하려면 최소 한번은 직접 참조(해시)를 사용해야 합니다.",
"uk": "Тобі потрібно використати як мінімум одне пряме посилання (хеш) щоб пройти цей рівень",
"vi": "Bạn sẽ cần dùng ít nhất một tham chiếu trực tiếp (mã băm) để hoàn thành cấp độ này",
"sl_SI": "Moral boš uporabiti vsaj eno direktno referenco (hash) za dokončanje te stopnje.",
"it_IT": "Dovrai usare almeno un riferimento diretto (hash) per completare questo livello",
"it_IT": "Dovrai usare almeno un riferimento diretto (hash) per completare questo livello",
"pl": "Aby ukończyć ten poziom, musisz użyć co najmniej jednej bezpośredniej referencji (hasza).",
"ta_IN": "இந்த நிலவை முடிக்க குறைந்தது ஒரு நேரடி குறிப்பு (ஹாஷ்) பயன்படுத்த வேண்டும்",
"tr_TR": "Bu seviyeyi tamamlamak için en az bir doğrudan referans (hash) kullanmanız gerekecek"
@ -38,7 +38,7 @@ exports.level = {
"zh_CN": "相对引用2~",
"zh_TW": "相對引用二(~",
"ro": "Referințe relative #2 (~)",
"ru_RU": 'Относительные ссылки №2',
"ru_RU": "Относительные ссылки №2",
"ko": "상대 참조 #2 (~)",
"uk": "Відносні посилання №2",
"vi": "Tham chiếu tương đối #2 (~)",
@ -985,7 +985,8 @@ exports.level = {
"방금의 커맨드를 직접 확인해 봅시다."
],
"afterMarkdowns": [
"됐네요! 우리는 상대 참조를 통해 `C1`을 간결한 방법으로 참조할 수 있었고 브랜치 강제(`-f`)를 통해 브랜치를 저 위치로 빠르게 옮길 수 있었습니다."],
"됐네요! 우리는 상대 참조를 통해 `C1`을 간결한 방법으로 참조할 수 있었고 브랜치 강제(`-f`)를 통해 브랜치를 저 위치로 빠르게 옮길 수 있었습니다."
],
"command": "git branch -f main HEAD~3",
"beforeCommand": "git commit; git commit; git commit; git checkout -b bugFix"
}
@ -1284,25 +1285,27 @@ exports.level = {
"type": "ModalAlert",
"options": {
"markdowns": [
'### L\'operatore "~"',
"### L'operatore \"~\"",
"",
"Nel caso in cui voglia risalire di più livelli l'albero dei commit, è una seccatura aggiungere `^` per ogni salto, per questo Git ha l'operatore tilde(~).",
"",
"",
"A questo operatore si può (facoltativamente) aggiungere un numero che specifica di quanti livelli si vuole risalire l'albero dei commit. Vediamolo in azione.",
],
},
"A questo operatore si può (facoltativamente) aggiungere un numero che specifica di quanti livelli si vuole risalire l'albero dei commit. Vediamolo in azione."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Specifichiamo il numero di commit con `~`.",
"Specifichiamo il numero di commit con `~`."
],
"afterMarkdowns": [
"Fatto! Breve ed efficace -- i riferimenti relativi sono stupendi."
],
"afterMarkdowns": ["Fatto! Breve ed efficace -- i riferimenti relativi sono stupendi."],
"command": "git checkout HEAD~4",
"beforeCommand": "git commit; git commit; git commit",
},
"beforeCommand": "git commit; git commit; git commit"
}
},
{
"type": "ModalAlert",
@ -1316,21 +1319,22 @@ exports.level = {
"",
"`git branch -f main HEAD~3`",
"",
"sposta (con la forza) il ramo main al terzo antenato di HEAD.",
],
},
"sposta (con la forza) il ramo main al terzo antenato di HEAD."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": ["Vediamolo in azione."],
"beforeMarkdowns": [
"Vediamolo in azione."
],
"afterMarkdowns": [
"Ecco qua! I riferimenti relativi ci permettono facilmente di specificare `C1` e il branch forcing (`-f`) ci da modo di spostare rapidamente il ramo su quella posizione.",
"Ecco qua! I riferimenti relativi ci permettono facilmente di specificare `C1` e il branch forcing (`-f`) ci da modo di spostare rapidamente il ramo su quella posizione."
],
"command": "git branch -f main HEAD~3",
"beforeCommand":
"git commit; git commit; git commit; git checkout -b bugFix",
},
"beforeCommand": "git commit; git commit; git commit; git checkout -b bugFix"
}
},
{
"type": "ModalAlert",
@ -1338,11 +1342,11 @@ exports.level = {
"markdowns": [
"Ora che hai visto i riferimenti relativi e il branch forcing, usiamoli per completare il prossimo livello.",
"",
"Per completare questo livello, sposta `HEAD`, `main`, e `bugFix` alla loro destinazione finale mostrata nell'obiettivo.",
],
},
},
],
"Per completare questo livello, sposta `HEAD`, `main`, e `bugFix` alla loro destinazione finale mostrata nell'obiettivo."
]
}
}
]
},
"tr_TR": {
"childViews": [

View file

@ -16,7 +16,7 @@ exports.level = {
"ko": "Git에서 작업 되돌리기",
"zh_CN": "撤销变更",
"zh_TW": "在 git 中取消修改 ",
"ro":"Anularea modificărilor în Git",
"ro": "Anularea modificărilor în Git",
"ru_RU": "Отмена изменений в Git",
"uk": "Відміна змін в Git",
"vi": "Hoàn tác thay đổi trong Git",
@ -46,7 +46,6 @@ exports.level = {
"it_IT": "Revert e reset hanno parametri diversi.",
"pl": "Zauważ, że revert i reset przyjmują różne argumenty",
"tr_TR": "revert ve reset'in farklı parametreler aldığını unutma."
},
"startDialog": {
"en_US": {
@ -1173,7 +1172,7 @@ exports.level = {
"command": "git revert HEAD",
"beforeCommand": "git commit"
}
},
}
]
},
"it_IT": {
@ -1187,9 +1186,9 @@ exports.level = {
"Esistono molti modi per annullare i cambiamenti in Git. Come la creazione di commit, anche l'annullamento in Git ha sia una componente di basso livello (tracciatura dei singoli file o blocchi) e uno di alto livello (come l'annullamento viene realmente eseguito). La nostra applicazione si concentrerà su quest'ultima.",
"",
"Ci sono due modi principali per annullare con Git -- uno è usare `git reset` e l'altro è `git revert`. Entreremo nel dettaglio per entrambi.",
"",
],
},
""
]
}
},
{
"type": "GitDemonstrationView",
@ -1197,16 +1196,16 @@ exports.level = {
"beforeMarkdowns": [
"## Git Reset",
"",
'`git reset` annulla le modifiche spostando il puntatore al ramo indietro nel tempo a un commit precedente. Puoi vederla come se stessi "riscrivendo la storia;" `git reset` torna al commit precedente come se il nuovo commit non fosse mai esistito.',
"`git reset` annulla le modifiche spostando il puntatore al ramo indietro nel tempo a un commit precedente. Puoi vederla come se stessi \"riscrivendo la storia;\" `git reset` torna al commit precedente come se il nuovo commit non fosse mai esistito.",
"",
"Vediamone una rappresentazione:",
"Vediamone una rappresentazione:"
],
"afterMarkdowns": [
"Grande! Git ha spostato il puntatore del ramo main the main sul commit `C1`; ora il nostro repository locale è come se non avesse mai avuto un commit `C2`.",
"Grande! Git ha spostato il puntatore del ramo main the main sul commit `C1`; ora il nostro repository locale è come se non avesse mai avuto un commit `C2`."
],
"command": "git reset HEAD~1",
"beforeCommand": "git commit",
},
"beforeCommand": "git commit"
}
},
{
"type": "GitDemonstrationView",
@ -1214,18 +1213,18 @@ exports.level = {
"beforeMarkdowns": [
"## Git Revert",
"",
'Git reset funziona perfettamente in locale sul proprio computer, ma la funzione di "riscrivere la storia" non va d\'accordo con i rami salvati in remoto utilizzati da altri colleghi.',
"Git reset funziona perfettamente in locale sul proprio computer, ma la funzione di \"riscrivere la storia\" non va d'accordo con i rami salvati in remoto utilizzati da altri colleghi.",
"",
"Per fare in modo di annullare e *condividere* con gli altri le modifiche annullate, dobbiamo usare `git revert`. Vediamolo in azione.",
"Per fare in modo di annullare e *condividere* con gli altri le modifiche annullate, dobbiamo usare `git revert`. Vediamolo in azione."
],
"afterMarkdowns": [
"Strano, un nuovo commit è stato creato sotto il commit che volevamo annullare. Questo perché il nuovo commit `C2'` porta *cambiamenti* -- per l'esattezza i cambiamenti sono quelli che annullano il commit `C2`.",
"",
"Con git revert, aggiungi i cambiamenti che possono essere poi condivisi con altri.",
"Con git revert, aggiungi i cambiamenti che possono essere poi condivisi con altri."
],
"command": "git revert HEAD",
"beforeCommand": "git commit",
},
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
@ -1233,11 +1232,11 @@ exports.level = {
"markdowns": [
"Per completare questo livello, annulla i commit più recenti sia in `local` che in `pushed`. Alla fine annullerai due commit in totale (uno per ramo).",
"",
"Tieni presente che `pushed` è un ramo remoto e `local` è un ramo locale -- questo dovrebbe aiutarti a scegliere quale metodo usare.",
],
},
},
],
"Tieni presente che `pushed` è un ramo remoto e `local` è un ramo locale -- questo dovrebbe aiutarti a scegliere quale metodo usare."
]
}
}
]
},
"tr_TR": {
"childViews": [

View file

@ -20,7 +20,7 @@ exports.level = {
"ja": "9000回以上のrebase",
"zh_CN": "多次 Rebase",
"zh_TW": "N次Rebase",
"ro":"Rebase de peste 9000 ori",
"ro": "Rebase de peste 9000 ori",
"ru_RU": "Rebase over 9000 раз",
"uk": "Rebase over 9000 разів",
"vi": "Rebase hơn 9000 lần",
@ -47,8 +47,7 @@ exports.level = {
"uk": "Не забувай, що краще всього буде перемістити main в самому кінці... ",
"vi": "Hãy nhớ rằng, cách tốt nhất có thể là cập nhật nhánh `main` sau cùng...",
"sl_SI": "Pomni, morda je najbolj učinkovit način posodabljanje masterja samo na koncu ...",
"it_IT":
"Ricorda, il modo migliore potrebbe essere di aggiornare il main alla fine...",
"it_IT": "Ricorda, il modo migliore potrebbe essere di aggiornare il main alla fine...",
"pl": "Pamiętaj, że najskuteczniejszym sposobem może być aktualizacja `main` dopiero na samym końcu...",
"tr_TR": "Şunu hatırlamanı isterim ki: belki de en verimli yol işin sonunda maini güncellemektir."
},
@ -378,22 +377,22 @@ exports.level = {
]
},
"it_IT": {
childViews: [
"childViews": [
{
type: "ModalAlert",
options: {
markdowns: [
"type": "ModalAlert",
"options": {
"markdowns": [
"### Fare rebase con più rami",
"",
"Hey, qui abbiamo un bel po' di rami! Facciamo un po' di rebase di questi rami nel main.",
"",
"I piani alti ci stanno rendendo la vita complicata -- vogliono i commit tutti in ordine progressivo. Questo significa che alla fine il nostro albero avrà `C7'` come ultimo commit, `C6'` sopra di esso, e così via, tutto in ordine.",
"",
"Se ti smarrisci lungo la via, usa `reset` senza problemi per ripartire da capo. Assicurati di raggiungere l'obiettivo e cerca di farlo con il minor numero di comandi!",
],
},
},
],
"Se ti smarrisci lungo la via, usa `reset` senza problemi per ripartire da capo. Assicurati di raggiungere l'obiettivo e cerca di farlo con il minor numero di comandi!"
]
}
}
]
},
"tr_TR": {
"childViews": [
@ -412,6 +411,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -443,13 +443,13 @@ exports.level = {
"",
"Burada `main`, `one` `two` ve `three` dallarından birkaç commit önde. Herhangi bir nedenden ötürü, bu diğer üç dalı main'deki son birkaç commit'in değiştirilmiş versiyonlarıyla güncellememiz gerekiyor.",
"",
"`one` branchi bu commitlerin yeniden düzenlenmesine ve an `C5`\'in hariç tutulması/bırakılmasına ihtiyaç duyuyor. `two` branchi sadece commitlerin yeniden sıralanmasına ihtiyaç duyuyuor, ve `three` için sadece bir commit transferi gerekiyor!",
"`one` branchi bu commitlerin yeniden düzenlenmesine ve an `C5`'in hariç tutulması/bırakılmasına ihtiyaç duyuyor. `two` branchi sadece commitlerin yeniden sıralanmasına ihtiyaç duyuyuor, ve `three` için sadece bir commit transferi gerekiyor!",
"",
"Bunu nasıl çözeceğinizi size anlatacağız -- daha sonrasında bizim çözümümüzü `show solution` ile kontrol etmeyi unutmayın."
]
}
}
]
},
}
}
};

View file

@ -1,5 +1,5 @@
exports.level = {
"goalTreeString": '{"branches":{"main":{"target":"C1","id":"main","remoteTrackingBranchID":"o/main"},"o/main":{"target":"C1","id":"o/main","remoteTrackingBranchID":null}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"main","id":"HEAD"},"originTree":{"branches":{"main":{"target":"C1","id":"main","remoteTrackingBranchID":null}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"main","id":"HEAD"}}}',
"goalTreeString": "{\"branches\":{\"main\":{\"target\":\"C1\",\"id\":\"main\",\"remoteTrackingBranchID\":\"o/main\"},\"o/main\":{\"target\":\"C1\",\"id\":\"o/main\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"main\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"main\":{\"target\":\"C1\",\"id\":\"main\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"main\",\"id\":\"HEAD\"}}}",
"solutionCommand": "git clone",
"name": {
"en_US": "Clone Intro",
@ -13,7 +13,7 @@ exports.level = {
"gl": "Introducción a clone",
"zh_CN": "Git Clone",
"zh_TW": "介紹 clone",
"ro":"Introducere în clonare",
"ro": "Introducere în clonare",
"ru_RU": "Введение в клонирование",
"ko": "Clone 소개",
"uk": "Знайомство з clone",
@ -44,7 +44,6 @@ exports.level = {
"pl": "Po prostu git clone!",
"it_IT": "Semplicemente git clone!",
"tr_TR": "Sadece git clone yapın!"
},
"startDialog": {
"en_US": {

View file

@ -26,27 +26,27 @@ exports.level = {
"ta_IN": "Git Fetch"
},
"hint": {
"en_US": "just run git fetch!",
"fr_FR": "Exécuter juste git fetch",
"de_DE": "Einfach git fetch ausführen!",
"ja": "単にgit fetchを実行",
"es_AR": "Simplemente ¡hacé git fetch!",
"es_MX": "Simplemente ¡escribe git fetch!",
"es_ES": "Simplemente ¡escribe git fetch!",
"pt_BR": "Simplesmente chame git fetch!",
"gl": "¡Sinxelamente fai git fetch!",
"zh_CN": "只需要运行 git fetch 命令!",
"zh_TW": "只要下 git fetch 指令",
"ro": "Doar rulează git fetch!",
"ru_RU": "Просто выполните git fetch!",
"uk": "Просто виконай git fetch!",
"ko": "그냥 git fetch를 하세요!",
"vi": "Gõ git fetch là được!",
"sl_SI": "Le izvedi git fetch!",
"pl": "Po prostu uruchom git fetch!",
"it_IT": "Semplicemente git fetch!",
"tr_TR": "Sadece git fetch komutunu çalıştırın!",
"ta_IN": "பொதுவாக git fetch நடத்துங்கள்!"
"en_US": "just run git fetch!",
"fr_FR": "Exécuter juste git fetch",
"de_DE": "Einfach git fetch ausführen!",
"ja": "単にgit fetchを実行",
"es_AR": "Simplemente ¡hacé git fetch!",
"es_MX": "Simplemente ¡escribe git fetch!",
"es_ES": "Simplemente ¡escribe git fetch!",
"pt_BR": "Simplesmente chame git fetch!",
"gl": "¡Sinxelamente fai git fetch!",
"zh_CN": "只需要运行 git fetch 命令!",
"zh_TW": "只要下 git fetch 指令",
"ro": "Doar rulează git fetch!",
"ru_RU": "Просто выполните git fetch!",
"uk": "Просто виконай git fetch!",
"ko": "그냥 git fetch를 하세요!",
"vi": "Gõ git fetch là được!",
"sl_SI": "Le izvedi git fetch!",
"pl": "Po prostu uruchom git fetch!",
"it_IT": "Semplicemente git fetch!",
"tr_TR": "Sadece git fetch komutunu çalıştırın!",
"ta_IN": "பொதுவாக git fetch நடத்துங்கள்!"
},
"startDialog": {
"en_US": {

View file

@ -13,7 +13,7 @@ exports.level = {
"gl": "Parámetros de fetch",
"de_DE": "Optionen für Fetch",
"ja": "Fetchの引数",
"ro":"Argumente pentru fetch",
"ro": "Argumente pentru fetch",
"ru_RU": "Аргументы для fetch",
"ko": "Fetch의 인자들",
"uk": "Аргументи для fetch",
@ -1354,7 +1354,7 @@ exports.level = {
"",
"Aici este singura problemă -- `<sursa>` este acum un loc pe *remote* și `<destinatie>` este un *loc local* unde să pui acele commit-uri. Este exact opusul la git push, și asta are sens deoarece transferăm date în direcția opusă!",
"",
"Acestea fiind spuse, dezvoltatorii rareori fac asta în practică. Îl introduc aici mai mult ca o modalitate de a conceptualiza cum `fetch` și `push` sunt foarte asemănătoare, doar că în direcții opuse.",
"Acestea fiind spuse, dezvoltatorii rareori fac asta în practică. Îl introduc aici mai mult ca o modalitate de a conceptualiza cum `fetch` și `push` sunt foarte asemănătoare, doar că în direcții opuse."
]
}
},
@ -1375,10 +1375,10 @@ exports.level = {
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Ce se întâmplă dacă destinația nu există înainte să rulez comanda? Să vedem ultimul exemplu, dar de data aceasta fără ca `bar` să existe.",
"Ce se întâmplă dacă destinația nu există înainte să rulez comanda? Să vedem ultimul exemplu, dar de data aceasta fără ca `bar` să existe."
],
"afterMarkdowns": [
"Vezi? E EXACT ca la git push. Git a creat destinația local înainte de a face fetch, la fel cum git va crea destinația pe remote înainte de a face push (dacă nu există).",
"Vezi? E EXACT ca la git push. Git a creat destinația local înainte de a face fetch, la fel cum git va crea destinația pe remote înainte de a face push (dacă nu există)."
],
"command": "git fetch origin C2:bar",
"beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2"
@ -2394,6 +2394,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -21,7 +21,7 @@ exports.level = {
"sl_SI": "Razdeljena Zgodovina",
"pl": "Rozbieżna historia",
"it_IT": "Storico divergente",
"tr_TR": "Sapmış Tarihçe",
"tr_TR": "Sapmış Tarihçe"
},
"hint": {
"en_US": "Check out the ordering from the goal visualization",
@ -42,7 +42,7 @@ exports.level = {
"sl_SI": "Preveri vrstni red iz ciljne vizualizacije.",
"pl": "Przyjrzyj się kolejności na wizualizacji celu",
"it_IT": "Controlla l'ordinamento dalla schermata dell'obiettivo",
"tr_TR": "Hedef görselleştirmesindeki sıralamaya dikkat edin",
"tr_TR": "Hedef görselleştirmesindeki sıralamaya dikkat edin"
},
"startDialog": {
"en_US": {
@ -2760,6 +2760,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -5,7 +5,7 @@ exports.level = {
"hint": {
"en_US": "Make the feature branch from the local main before resetting it back to be the same as origin's main",
"de_DE": "Erstelle einen Feature-Branch ausgehend vom lokalen Main-Branch, bevor du den Main-Branch auf den origin/main zurücksetzt.",
"ro":"Creează o ramură feature din main-ul local înainte de a reseta main-ul pentru a fi la fel cu origin/main.",
"ro": "Creează o ramură feature din main-ul local înainte de a reseta main-ul pentru a fi la fel cu origin/main.",
"ru_RU": "Создайте новую feature ветвь от main перед тем, как откатить изменения в main до состояния o/main.",
"uk": "Створіть нову feature гілку від локального main перед тим, як відкотити зміни в main до стану o/main.",
"zh_CN": "从本地的main创建一个feature分支, 然后重置main和origin main保持一致。",
@ -20,7 +20,7 @@ exports.level = {
"pl": "Stwórz boczną gałąź tematyczną (feature) z lokalnego main, a późnej zsynchronizuj ją z main na origin",
"vi": "Tạo những nhánh tính năng từ nhánh cục bộ trước khi trả chúng về lại giống như o/main",
"it_IT": "Crea il ramo per la feature a partire dal main locale prima di resettarlo al pari del main remoto",
"tr_TR": "Özellik dalını, origin/main ile aynı olacak şekilde sıfırlamadan önce yerel main'den oluşturun.",
"tr_TR": "Özellik dalını, origin/main ile aynı olacak şekilde sıfırlamadan önce yerel main'den oluşturun."
},
"name": {
"en_US": "Locked Main",
@ -40,7 +40,7 @@ exports.level = {
"pl": "Zablokowany main",
"vi": "Nhánh chính bị khóa (Locked Main)",
"it_IT": "Main bloccato",
"tr_TR": "Kilitli Main",
"tr_TR": "Kilitli Main"
},
"startDialog": {
"en_US": {
@ -197,7 +197,7 @@ exports.level = {
"markdowns": [
"## Soluția",
"",
"Creează o altă ramură numită `feature` și împinge-o către remote. De asemenea, resetează ramura ta `main` pentru a fi sincronizată cu remote, altfel s-ar putea să ai probleme data viitoare când faci pull și commit-ul altcuiva intră în conflict cu al tău.",
"Creează o altă ramură numită `feature` și împinge-o către remote. De asemenea, resetează ramura ta `main` pentru a fi sincronizată cu remote, altfel s-ar putea să ai probleme data viitoare când faci pull și commit-ul altcuiva intră în conflict cu al tău."
]
}
}
@ -286,7 +286,6 @@ exports.level = {
"## Рішення:",
"",
"Створіть ще одну гілку з назвою `feature` і відправте зміни у віддалений репозиторій. Також не забудьте повернути вашу локальну гілку `main` в вихідне положення (щоб вона була синхронізована з віддаленою). Інакше у вас можуть виникнути складнощі при наступному виконанні запиту `git pull`, коли коміти інших розробників конфліктуватимуть з вашими."
]
}
}
@ -317,7 +316,6 @@ exports.level = {
"Se rechazó el `push` del `commit` a la rama `main` debido a la política en la rama `main` que requiere el uso de `Pull Requests`.",
"",
"Trataste de crear una rama y luego hacer `pushs` creando un `Pull Request`, pero te olvidaste e hiciste `commit` directamente a `main`. Ahora estás atascado y no puedes hacer `push` de tus cambios."
]
}
},
@ -478,7 +476,6 @@ exports.level = {
"Se rechazó el `push` del `commit` a la rama `main` debido a la política en la rama `main` que requiere el uso de `Pull Requests`.",
"",
"Trataste de crear una rama y luego hacer `pushs` creando un `Pull Request`, pero te olvidaste e hiciste `commit` directamente a `main`. Ahora estás atascado y no puedes hacer `push` de tus cambios."
]
}
},
@ -615,7 +612,6 @@ exports.level = {
]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
@ -663,9 +659,7 @@ exports.level = {
"markdowns": [
"## Kết nối remote bị từ chối!",
"",
"Nếu bạn làm việc trong một nhóm cộng tác lớn, có khả năng nhánh main bị khóa và yêu cầu một số quy" +
" trình Pull Request để hợp nhất các thay đổi. Nếu bạn commit trực tiếp với nhánh cục bộ và thử" +
" push, bạn sẽ được chào đón bằng một thông báo tương tự như sau:",
"Nếu bạn làm việc trong một nhóm cộng tác lớn, có khả năng nhánh main bị khóa và yêu cầu một số quy trình Pull Request để hợp nhất các thay đổi. Nếu bạn commit trực tiếp với nhánh cục bộ và thử push, bạn sẽ được chào đón bằng một thông báo tương tự như sau:",
"",
"```",
" ! [remote rejected] main -> main (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)",
@ -679,8 +673,7 @@ exports.level = {
"markdowns": [
"## Tại sao bị từ chối?",
"",
"Remote từ chối push các commit trực tiếp đến main vì chính sách của main yêu cầu các pull" +
" request được sử dụng thay thế.",
"Remote từ chối push các commit trực tiếp đến main vì chính sách của main yêu cầu các pull request được sử dụng thay thế.",
"",
"Bạn định tạo một nhánh sau đó đẩy nhánh lên rồi thực hiện pull request theo đúng quy trình, tuy nhiên bạn lại lỡ tay commit trực tiếp vào nhánh main. Bây giờ bạn bị mắc kẹt và không thể đẩy các thay đổi của mình lên."
]
@ -692,9 +685,7 @@ exports.level = {
"markdowns": [
"## Giải pháp",
"",
"Tạo một nhánh khác được gọi là feature và push nhánh đó đến remote. Đồng thời đặt lại nhánh main" +
" của bạn để đồng bộ với remote, nếu không bạn có thể gặp sự cố vào lần tiếp theo khi bạn thực hiện" +
" pull và commit của người khác xung đột với của bạn."
"Tạo một nhánh khác được gọi là feature và push nhánh đó đến remote. Đồng thời đặt lại nhánh main của bạn để đồng bộ với remote, nếu không bạn có thể gặp sự cố vào lần tiếp theo khi bạn thực hiện pull và commit của người khác xung đột với của bạn."
]
}
}
@ -779,6 +770,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -13,7 +13,7 @@ exports.level = {
"de_DE": "Änderungen vom Remote zusammenführen",
"ja": "リモートとのmerge",
"fr_FR": "Fusionner avec les branches distantes",
"ro":"Fuzionare cu remote",
"ro": "Fuzionare cu remote",
"ru_RU": "Слияние с удалённым репозиторием",
"ko": "원격 작업과 merge하기",
"uk": "Мердж з віддаленим репозиторієм",
@ -21,7 +21,7 @@ exports.level = {
"sl_SI": "Merganje z oddaljenim repozitorijem",
"pl": "Scalanie z remote",
"it_IT": "Fondere in remoto",
"tr_TR": "Uzak Sunucularla Birleştirme",
"tr_TR": "Uzak Sunucularla Birleştirme"
},
"hint": {
"en_US": "Pay attention to the goal tree!",
@ -42,7 +42,7 @@ exports.level = {
"sl_SI": "Poglej si ciljno drevo!",
"pl": "Zwróć uwagę, jak wygląda docelowe drzewo!",
"it_IT": "Fai attenzione all'albero nell'obiettivo",
"tr_TR": "Hedef ağacına dikkat et!",
"tr_TR": "Hedef ağacına dikkat et!"
},
"compareOnlyMain": true,
"startDialog": {
@ -900,6 +900,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -21,7 +21,7 @@ exports.level = {
"sl_SI": "Git Pull",
"pl": "Git pull",
"it_IT": "Git Pull",
"tr_TR": "Git Pull",
"tr_TR": "Git Pull"
},
"hint": {
"en_US": "Just run git pull!",
@ -42,7 +42,7 @@ exports.level = {
"sl_SI": "Samo izvedi git pull!",
"pl": "Po prostu uruchom git pull!",
"it_IT": "Semplicemente git pull!",
"tr_TR": "Sadece git pull komutunu çalıştırın!",
"tr_TR": "Sadece git pull komutunu çalıştırın!"
},
"startDialog": {
"en_US": {
@ -1165,6 +1165,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -22,7 +22,7 @@ exports.level = {
"sl_SI": "Pull argumenti",
"pl": "Argumenty pull",
"it_IT": "Parametri di git pull",
"tr_TR": "Git pull komutunun parametreleri",
"tr_TR": "Git pull komutunun parametreleri"
},
"hint": {
"en_US": "Remember that you can create new local branches with fetch/pull arguments",
@ -36,7 +36,7 @@ exports.level = {
"de_DE": "Du kannst neue lokale Branches mittels fetch / pull erstellen",
"ja": "Fetchとpullの引数を利用してローカルで新規ブランチを作成できるのをお忘れなく",
"fr_FR": "Vous pouvez aussi créer une nouvelle branche locale avec les arguments de fetch/pull",
"ro":"Amintește-ți că poți crea ramuri locale noi folosind argumentele la fetch/pull",
"ro": "Amintește-ți că poți crea ramuri locale noi folosind argumentele la fetch/pull",
"ru_RU": "Напоминаю, что новые ветки можно создавать и с помощью команд fetch/pull",
"ko": "fetch/pull 과 인자들로 새 로컬 브랜치를 생성할수 있다는것을 기억하세요.",
"uk": "Пам'ятай, що ти можеш створювати нові гілки, використовуючи fetch/pull з аргументами",
@ -44,7 +44,7 @@ exports.level = {
"sl_SI": "Zapomni si, da lahko ustvariš nove lokalne branche s fetch/pull argumenti.",
"pl": "Pamiętaj, że za pomocą argumentów fetch/pull możesz tworzyć nowe lokalne gałęzie",
"it_IT": "Ricorda che puoi creare nuovi rami locali sfruttando fetch/pull + parametri",
"tr_TR": "Unutma, fetch/pull parametreleri ile yeni yerel dallar oluşturabilirsin",
"tr_TR": "Unutma, fetch/pull parametreleri ile yeni yerel dallar oluşturabilirsin"
},
"startDialog": {
"en_US": {
@ -1535,6 +1535,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -1,6 +1,6 @@
exports.level = {
"disabledMap": {
"git fakeTeamwork": true,
"git fakeTeamwork": true
},
"goalTreeString": "{\"branches\":{\"main\":{\"target\":\"C3\",\"id\":\"main\",\"remoteTrackingBranchID\":\"o/main\",\"localBranchesThatTrackThis\":null},\"o/main\":{\"target\":\"C3\",\"id\":\"o/main\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":[\"main\"]}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"main\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"main\":{\"target\":\"C3\",\"id\":\"main\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"main\",\"id\":\"HEAD\"}}}",
"solutionCommand": "git commit;git commit;git push",
@ -36,7 +36,7 @@ exports.level = {
"de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!",
"ja": "Pushができるようになるには、まずリポジトリをcloneする必要があるのをお忘れなく",
"fr_FR": "Rappelez-vous que vous devez cloner avant de pouvoir faire un push !",
"ro":"Amintiți-vă că trebuie să clonați înainte de a putea face push!",
"ro": "Amintiți-vă că trebuie să clonați înainte de a putea face push!",
"ru_RU": "Помните, что прежде чем push-ить вам нужно склонировать репозиторий!",
"uk": "Пам’ятай, що перед тим як щось push-нути потрібно склонувати репозиторій!",
"ko": "push를 하기전에 clone을 먼저해야 된다는것을 기억하세요!",
@ -858,6 +858,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -25,7 +25,7 @@ exports.level = {
"sl_SI": "Git push argumenti",
"pl": "Argumenty git push",
"it_IT": "Parametri di git push",
"tr_TR": "Git push argümanları",
"tr_TR": "Git push argümanları"
},
"hint": {
"en_US": "You can always look at the last slide of the dialog with \"objective\"",
@ -46,7 +46,7 @@ exports.level = {
"sl_SI": "Vedno lahko pogledaš zadnji dialog z \"objective\".",
"pl": "Możesz wpisać \"objective\", żeby zobaczyć ostatni slajd z każdego poziomu",
"it_IT": "Puoi sempre guardare l'ultima slide del dialogo con \"objective\"",
"tr_TR": "Her zaman \"objective\" komutunu kullanarak diyalog penceresinin son sayfasına bakabilirsiniz",
"tr_TR": "Her zaman \"objective\" komutunu kullanarak diyalog penceresinin son sayfasına bakabilirsiniz"
},
"startDialog": {
"en_US": {
@ -1449,6 +1449,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -21,7 +21,7 @@ exports.level = {
"sl_SI": "Git push argumenti -- Razširjeni!",
"pl": "Argumenty git push -- Głębiej!",
"it_IT": "Parametri di git push - Espansione!",
"tr_TR": "Git push argümanları -- Genişletilmiş!",
"tr_TR": "Git push argümanları -- Genişletilmiş!"
},
"hint": {
"en_US": "Remember you can admit defeat and type in \"show solution\" :P",
@ -42,7 +42,7 @@ exports.level = {
"sl_SI": "Vedno se lahko predaš in napišeš \"show solution\". :P",
"pl": "Pamiętaj, że możesz się poddać i zobaczyć gotowe rozwiązanie, wpisując \"show solution\" :P",
"it_IT": "Puoi sempre ammettere la tua sconfitta e digitare \"show solution\" :P",
"tr_TR": "Unutma, teslim olabileceğini ve \"show solution\" yazabileceğini :P",
"tr_TR": "Unutma, teslim olabileceğini ve \"show solution\" yazabileceğini :P"
},
"startDialog": {
"en_US": {
@ -1384,6 +1384,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -13,7 +13,7 @@ exports.level = {
"de_DE": "Denk dran, du kannst immer undo oder reset benutzen, um deine Befehle zurück zu nehmen.",
"ja": "undoやresetコマンドをいつでも使用することができるのをお忘れなく",
"fr_FR": "Rappelez-vous que vous pouvez toujours utiliser les commandes undo et reset.",
"ro":"Amintește-ți că poți folosi oricând comenzile undo sau reset",
"ro": "Amintește-ți că poți folosi oricând comenzile undo sau reset",
"ru_RU": "Помни - ты всегда можешь отменить команды с помощью undo или reset",
"ko": "명령어를 undo와 reset으로 되돌릴 수 있다는 것을 잊지마세요",
"uk": "Пам'ятай, ти в будь-який момент можеш використовувати команди undo або reset",
@ -21,7 +21,7 @@ exports.level = {
"sl_SI": "Vedno lahko razveljaviš ukaz ali ponastaviš stopnjo.",
"pl": "Pamiętaj, że zawsze możesz skorzystać z poleceń undo i reset",
"it_IT": "Ricorda che puoi sempre usare i comandi undo e reset",
"tr_TR": "Unutmayın, her zaman undo veya reset komutlarını kullanabilirsiniz.",
"tr_TR": "Unutmayın, her zaman undo veya reset komutlarını kullanabilirsiniz."
},
"name": {
"en_US": "Push Main!",
@ -42,7 +42,7 @@ exports.level = {
"sl_SI": "Push Main!",
"pl": "Wypychanie dla wytrwałych!",
"it_IT": "Push main!",
"tr_TR": "Main'i Push Et!",
"tr_TR": "Main'i Push Et!"
},
"compareOnlyMainHashAgnostic": true,
"startDialog": {
@ -1052,6 +1052,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -22,7 +22,7 @@ exports.level = {
"sl_SI": "Oddaljeni Branchi",
"pl": "Zdalne gałęzie",
"it_IT": "Rami Remoti",
"tr_TR": "Uzak Dallar",
"tr_TR": "Uzak Dallar"
},
"hint": {
"en_US": "Pay attention to the ordering -- commit on main first!",
@ -44,7 +44,7 @@ exports.level = {
"sl_SI": "Bodi pozoren na vrsti red -- commitaj najprej na main!",
"pl": "Zwróć uwagę na kolejność -- najpierw zatwierdzaj na main",
"it_IT": "Presta attenzione all'ordine -- fai prima un commit sul main!",
"tr_TR": "Sıraya dikkat et -- önce main üzerinde commit yap!",
"tr_TR": "Sıraya dikkat et -- önce main üzerinde commit yap!"
},
"startDialog": {
"en_US": {
@ -1276,6 +1276,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -19,7 +19,7 @@ exports.level = {
"de_DE": "Die Quelle des Nichts",
"ja": "無のsource",
"fr_FR": "Source de rien du tout",
"ro":"Sursă goală",
"ro": "Sursă goală",
"ru_RU": "Пустой источник",
"ko": "Source가 없다",
"uk": "Нема джерела",
@ -48,7 +48,7 @@ exports.level = {
"sl_SI": "Ukaz za branchanje je v tej stopnji onemogočen, zato boš moral uporabiti fetch!",
"pl": "Polecenie branch jest zablokowane na tym poziomie, musisz skorzystać z fetch!",
"it_IT": "Il comando branch è disabilitato per questo livello quindi dovrai usare fetch!",
"tr_TR": "Bu seviyede branch komutu devre dışı bırakıldı, bu yüzden fetch kullanman gerekecek!",
"tr_TR": "Bu seviyede branch komutu devre dışı bırakıldı, bu yüzden fetch kullanman gerekecek!"
},
"startDialog": {
"en_US": {
@ -1061,6 +1061,6 @@ exports.level = {
}
}
]
},
}
}
};

View file

@ -13,7 +13,7 @@ exports.level = {
"de_DE": "Remote Tracking",
"ja": "リモートのトラッキング",
"fr_FR": "Suivi de branche distante",
"ro":"Urmărirea unui remote",
"ro": "Urmărirea unui remote",
"ru_RU": "Слежка за удалённым репозиторием",
"ko": "원격 저장소 추적하기",
"uk": "Слідкуємо за віддаленим репозиторієм",
@ -21,7 +21,7 @@ exports.level = {
"sl_SI": "Sledenje Oddaljenega Repota",
"pl": "Śledzenie zdalnych repo",
"it_IT": "Tracciamento remoto",
"tr_TR": "Uzaktan İzleme",
"tr_TR": "Uzaktan İzleme"
},
"hint": {
"en_US": "Remember there are two ways to set remote tracking!",
@ -42,7 +42,7 @@ exports.level = {
"sl_SI": "Spomni se, da obstajata dva načina za sledenje oddaljenega repota.",
"pl": "Pamiętaj, zdalne repo można śledzić na dwa sposoby!",
"it_IT": "Ricorda che ci sono due modi per impostare il tracciamento remoto!",
"tr_TR": "Unutma, uzak izlemeyi ayarlamanın iki yolu vardır!",
"tr_TR": "Unutma, uzak izlemeyi ayarlamanın iki yolu vardır!"
},
"startDialog": {
"en_US": {
@ -2405,6 +2405,6 @@ exports.level = {
}
}
]
},
}
}
};

227
yarn.lock
View file

@ -662,6 +662,12 @@ available-typed-arrays@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz"
available-typed-arrays@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
dependencies:
possible-typed-array-names "^1.0.0"
babelify@^10.0.0:
version "10.0.0"
resolved "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz"
@ -940,6 +946,13 @@ cached-path-relative@^1.0.0, cached-path-relative@^1.0.2:
version "1.1.0"
resolved "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz"
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
dependencies:
es-errors "^1.3.0"
function-bind "^1.1.2"
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
@ -947,6 +960,22 @@ call-bind@^1.0.0, call-bind@^1.0.2:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
call-bind@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
dependencies:
call-bind-apply-helpers "^1.0.0"
es-define-property "^1.0.0"
get-intrinsic "^1.2.4"
set-function-length "^1.2.2"
call-bound@^1.0.3, call-bound@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
dependencies:
call-bind-apply-helpers "^1.0.2"
get-intrinsic "^1.3.0"
camel-case@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz"
@ -1168,7 +1197,7 @@ create-ecdh@^4.0.0:
bn.js "^4.1.0"
elliptic "^6.0.0"
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
create-hash@^1.1.0, create-hash@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz"
dependencies:
@ -1178,7 +1207,16 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
ripemd160 "^2.0.1"
sha.js "^2.4.0"
create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
create-hash@~1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
dependencies:
cipher-base "^1.0.1"
inherits "^2.0.1"
ripemd160 "^2.0.0"
sha.js "^2.4.0"
create-hmac@^1.1.0, create-hmac@^1.1.7:
version "1.1.7"
resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz"
dependencies:
@ -1260,6 +1298,14 @@ default-resolution@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz"
define-data-property@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
dependencies:
es-define-property "^1.0.0"
es-errors "^1.3.0"
gopd "^1.0.1"
define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz"
@ -1357,6 +1403,14 @@ domutils@1.5:
dom-serializer "0"
domelementtype "1"
dunder-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
dependencies:
call-bind-apply-helpers "^1.0.1"
es-errors "^1.3.0"
gopd "^1.2.0"
duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
version "0.1.4"
resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz"
@ -1440,6 +1494,20 @@ es-abstract@^1.18.5:
string.prototype.trimstart "^1.0.4"
unbox-primitive "^1.0.1"
es-define-property@^1.0.0, es-define-property@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
dependencies:
es-errors "^1.3.0"
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
@ -1720,6 +1788,12 @@ flux@^4.0.3:
fbemitter "^3.0.0"
fbjs "^3.0.1"
for-each@^0.3.5:
version "0.3.5"
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47"
dependencies:
is-callable "^1.2.7"
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz"
@ -1766,6 +1840,10 @@ function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
@ -1786,6 +1864,28 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
has "^1.0.3"
has-symbols "^1.0.1"
get-intrinsic@^1.2.4, get-intrinsic@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
dependencies:
call-bind-apply-helpers "^1.0.2"
es-define-property "^1.0.1"
es-errors "^1.3.0"
es-object-atoms "^1.1.1"
function-bind "^1.1.2"
get-proto "^1.0.1"
gopd "^1.2.0"
has-symbols "^1.1.0"
hasown "^2.0.2"
math-intrinsics "^1.1.0"
get-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
dependencies:
dunder-proto "^1.0.1"
es-object-atoms "^1.0.0"
get-symbol-description@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz"
@ -1880,6 +1980,10 @@ glogg@^1.0.0:
dependencies:
sparkles "^1.0.0"
gopd@^1.0.1, gopd@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
version "4.2.3"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz"
@ -2017,16 +2121,32 @@ has-gulplog@^0.1.0:
dependencies:
sparkles "^1.0.0"
has-property-descriptors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
dependencies:
es-define-property "^1.0.0"
has-symbols@^1.0.1, has-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz"
has-symbols@^1.0.3, has-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
has-tostringtag@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
dependencies:
has-symbols "^1.0.2"
has-tostringtag@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
dependencies:
has-symbols "^1.0.3"
has-value@^0.3.1:
version "0.3.1"
resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz"
@ -2060,6 +2180,12 @@ has@^1.0.0, has@^1.0.3:
dependencies:
function-bind "^1.1.1"
hash-base@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
dependencies:
inherits "^2.0.1"
hash-base@^3.0.0:
version "3.0.4"
resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz"
@ -2074,6 +2200,12 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
hasown@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
dependencies:
function-bind "^1.1.2"
he@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
@ -2249,6 +2381,10 @@ is-callable@^1.1.4, is-callable@^1.2.4:
version "1.2.4"
resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz"
is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
is-core-module@^2.8.1:
version "2.8.1"
resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz"
@ -2394,6 +2530,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.2"
is-typed-array@^1.1.14:
version "1.1.15"
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
dependencies:
which-typed-array "^1.1.16"
is-typed-array@^1.1.3, is-typed-array@^1.1.7:
version "1.1.8"
resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz"
@ -2436,6 +2578,10 @@ isarray@1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
isarray@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
@ -2857,6 +3003,10 @@ matchdep@^2.0.0:
resolve "^1.4.0"
stack-trace "0.0.10"
math-intrinsics@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
md5.js@^1.3.4:
version "1.3.5"
resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz"
@ -3226,14 +3376,15 @@ path-type@^1.0.0:
pinkie-promise "^2.0.0"
pbkdf2@^3.0.3:
version "3.0.17"
resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz"
version "3.1.3"
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b"
dependencies:
create-hash "^1.1.2"
create-hmac "^1.1.4"
ripemd160 "^2.0.1"
safe-buffer "^5.0.1"
sha.js "^2.4.8"
create-hash "~1.1.3"
create-hmac "^1.1.7"
ripemd160 "=2.0.1"
safe-buffer "^5.2.1"
sha.js "^2.4.11"
to-buffer "^1.2.0"
picocolors@^1.0.0:
version "1.0.0"
@ -3280,6 +3431,10 @@ posix-character-classes@^0.1.0:
version "0.1.1"
resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz"
possible-typed-array-names@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"
postcss@^8.4.27:
version "8.4.35"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7"
@ -3610,6 +3765,13 @@ rimraf@^2.6.2:
dependencies:
glob "^7.1.3"
ripemd160@=2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
dependencies:
hash-base "^2.0.0"
inherits "^2.0.1"
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2"
resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz"
@ -3666,6 +3828,17 @@ set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
set-function-length@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
dependencies:
define-data-property "^1.1.4"
es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
gopd "^1.0.1"
has-property-descriptors "^1.0.2"
set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz"
@ -3679,7 +3852,7 @@ setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
sha.js@^2.4.0, sha.js@^2.4.8:
sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8:
version "2.4.11"
resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz"
dependencies:
@ -3988,6 +4161,14 @@ to-absolute-glob@^2.0.0:
is-absolute "^1.0.0"
is-negated-glob "^1.0.0"
to-buffer@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0"
dependencies:
isarray "^2.0.5"
safe-buffer "^5.2.1"
typed-array-buffer "^1.0.3"
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
@ -4040,6 +4221,14 @@ type@^2.7.2:
version "2.7.2"
resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
typed-array-buffer@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536"
dependencies:
call-bound "^1.0.3"
es-errors "^1.3.0"
is-typed-array "^1.1.14"
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
@ -4263,9 +4452,9 @@ vinyl@^2.0.0, vinyl@^2.1.0:
remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0"
vite@^4.5.6:
version "4.5.6"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.6.tgz#48bbd97fe06e8241df2e625b31c581707e10b57d"
vite@^4.5.14:
version "4.5.14"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.14.tgz#2e652bc1d898265d987d6543ce866ecd65fa4086"
dependencies:
esbuild "^0.18.10"
postcss "^8.4.27"
@ -4302,6 +4491,18 @@ which-module@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz"
which-typed-array@^1.1.16:
version "1.1.19"
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
dependencies:
available-typed-arrays "^1.0.7"
call-bind "^1.0.8"
call-bound "^1.0.4"
for-each "^0.3.5"
get-proto "^1.0.1"
gopd "^1.2.0"
has-tostringtag "^1.0.2"
which-typed-array@^1.1.2:
version "1.1.7"
resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz"